main.java

来自「java画图软件 具有绘制图形」· Java 代码 · 共 942 行 · 第 1/2 页

JAVA
942
字号
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package drawtest6;import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.util.*; import javax.swing.filechooser.FileFilter; import java.io.*; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; public class Main { public static void main(String[] args) { SimpleFrame frame=new SimpleFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setSize(700,600);} } class SimpleFrame extends JFrame { private static int flag=0; private static Color color=Color.BLACK; private static String dir="."; private AboutDialog aboutDialog=null; private JFileChooser chooser; final ExtensionFileFilter filter; public SimpleFrame() { Toolkit kit=Toolkit.getDefaultToolkit(); Dimension screenSize=kit.getScreenSize(); int height=screenSize.height; int width=screenSize.width; setSize(width/2,height/2); setTitle("Draw"); setLocation(width/4,height/4); Image img=kit.getImage("icon.gif"); setIconImage(img); chooser=new JFileChooser(); filter=new ExtensionFileFilter(); filter.addExtension("dw"); filter.setDescription("Draw File(*.dw)"); chooser.setFileFilter(filter); //----------------------------------------------------------------------------------- //add menubar(file) JMenu fileMenu=new JMenu("File"); JMenuItem newItem=new JMenuItem("New"); JMenuItem openItem=new JMenuItem("Open"); JMenuItem saveItem=new JMenuItem("Save"); JMenuItem saveAsItem=new JMenuItem("Sava As"); JMenuItem exitItem=new JMenuItem("Exit"); newItem.setMnemonic('N'); openItem.setMnemonic('O'); saveItem.setMnemonic('S'); exitItem.setMnemonic('E'); newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK)); saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK)); newItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { dir="."; color=Color.BLACK; flag=0; SimplePanel.line.clear(); SimplePanel.rect.clear(); SimplePanel.elli.clear(); repaint(); } }); openItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { color=Color.BLACK; flag=0; SimplePanel.line.clear(); SimplePanel.rect.clear(); SimplePanel.elli.clear(); chooser.setCurrentDirectory(new File(".")); int chooseResult=chooser.showOpenDialog(SimpleFrame.this); if(chooseResult==JFileChooser.APPROVE_OPTION) { try { dir=chooser.getSelectedFile().getPath(); ObjectInputStream in=new ObjectInputStream(new FileInputStream(dir)); read(in); in.close(); } catch(IOException e) {} catch(ClassNotFoundException n) {} } repaint(); } }); saveItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { int lineNumber=SimplePanel.getLineSize(); int rectNumber=SimplePanel.getRectSize(); int elliNumber=SimplePanel.getElliSize(); int p=chooser.showSaveDialog(SimpleFrame.this); if(p==JFileChooser.APPROVE_OPTION) { dir=chooser.getSelectedFile().getPath(); if(!dir.endsWith(".dw")) dir=dir+".dw"; File f=new File(dir); if(f.exists()) {} //if the file exists,must do something; else { try { boolean bool=f.createNewFile(); if(!bool) JOptionPane.showMessageDialog(SimpleFrame.this,"Creating File fall!"); } catch(IOException e) {} } } try { ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(dir)); write(out,lineNumber,rectNumber,elliNumber); out.close(); } catch(IOException e) {} } }); saveAsItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { } }); exitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.addSeparator(); fileMenu.add(saveItem); fileMenu.add(saveAsItem); fileMenu.addSeparator(); fileMenu.add(exitItem); //add menu(edit) JMenu editMenu=new JMenu("Edit"); JMenuItem undoItem=new JMenuItem("Undo"); undoItem.setMnemonic('U'); undoItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK)); UndoAction undoAction=new UndoAction(); undoItem.addActionListener(undoAction); editMenu.add(undoItem); //add menu(draw) JMenu drawMenu=new JMenu("Draw"); JMenuItem lineItem=new JMenuItem("Line"); JMenuItem rectItem=new JMenuItem("Rect"); JMenuItem elliItem=new JMenuItem("Elli"); JMenuItem cleanItem=new JMenuItem("Clean"); lineItem.setMnemonic('L'); rectItem.setMnemonic('R'); elliItem.setMnemonic('E'); cleanItem.setMnemonic('C'); lineItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK)); rectItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK)); elliItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK)); cleanItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); DrawAction lineAction=new DrawAction(1); DrawAction rectAction=new DrawAction(2); DrawAction elliAction=new DrawAction(3); CleanAction cleanAction=new CleanAction(); lineItem.addActionListener(lineAction); rectItem.addActionListener(rectAction); elliItem.addActionListener(elliAction); cleanItem.addActionListener(cleanAction); drawMenu.add(lineItem); drawMenu.add(rectItem); drawMenu.add(elliItem); drawMenu.add(cleanItem); //add menu(color) JMenu colorMenu=new JMenu("Color"); JMenuItem defaultItem=new JMenuItem("Default"); JMenuItem redItem=new JMenuItem("Red"); JMenuItem greenItem=new JMenuItem("Green"); JMenuItem blueItem=new JMenuItem("Blue"); JMenuItem moreItem=new JMenuItem("More..."); redItem.setMnemonic('R'); greenItem.setMnemonic('G'); blueItem.setMnemonic('B'); redItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK)); greenItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK)); blueItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK)); AddColorAction defaultAction=new AddColorAction(Color.BLACK); AddColorAction redAction=new AddColorAction(Color.RED); AddColorAction greenAction=new AddColorAction(Color.GREEN); AddColorAction blueAction=new AddColorAction(Color.BLUE); MoreColorAction moreAction=new MoreColorAction(); defaultItem.addActionListener(defaultAction); redItem.addActionListener(redAction); greenItem.addActionListener(greenAction); blueItem.addActionListener(blueAction); moreItem.addActionListener(moreAction); colorMenu.add(defaultItem); colorMenu.addSeparator(); colorMenu.add(redItem); colorMenu.add(greenItem); colorMenu.add(blueItem); colorMenu.addSeparator(); colorMenu.add(moreItem); //add menu(help) JMenu helpMenu=new JMenu("Help"); JMenuItem aboutItem=new JMenuItem("About"); aboutItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { if(aboutDialog==null) aboutDialog=new AboutDialog(SimpleFrame.this); aboutDialog.setVisible(true); } }); helpMenu.add(aboutItem); //--------------------------------------- JMenuBar menuBar=new JMenuBar(); menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(drawMenu); menuBar.add(colorMenu); menuBar.add(helpMenu); setJMenuBar(menuBar); //----------------------------------------------------------------------------------- //add toolbar JToolBar toolBar=new JToolBar(); //--------------------------------------- JButton undoButton=new JButton("Undo"); undoButton.addActionListener(undoAction); undoButton.setToolTipText("Undo with 100 times max"); //-------------------------------------- JButton lineButton=new JButton("Line"); JButton rectButton=new JButton("Rect"); JButton elliButton=new JButton("Elli"); JButton cleanButton=new JButton("Clean"); lineButton.addActionListener(lineAction); rectButton.addActionListener(rectAction); elliButton.addActionListener(elliAction); cleanButton.addActionListener(cleanAction); lineButton.setToolTipText("Drawing Line"); rectButton.setToolTipText("Drawing Rect"); elliButton.setToolTipText("Drawing Elli"); cleanButton.setToolTipText("Clean All"); //---------------------------------------- JButton redButton=new JButton("Red"); JButton greenButton=new JButton("Green"); JButton blueButton=new JButton("Blue"); JButton defaultButton=new JButton("default"); defaultButton.addActionListener(defaultAction); redButton.addActionListener(redAction); greenButton.addActionListener(greenAction); blueButton.addActionListener(blueAction); defaultButton.setToolTipText("Default Paintor(black)"); redButton.setToolTipText("Red Paintor"); greenButton.setToolTipText("Green Paintor"); blueButton.setToolTipText("Blue Paintor"); //---------------------------------------- toolBar.add(undoButton); toolBar.addSeparator(); toolBar.add(lineButton); toolBar.add(rectButton); toolBar.add(elliButton); toolBar.add(cleanButton); toolBar.addSeparator(); toolBar.add(defaultButton); toolBar.add(redButton); toolBar.add(greenButton); toolBar.add(blueButton); toolBar.setBorder(BorderFactory.createEtchedBorder()); toolBar.setFloatable(false); add(toolBar,BorderLayout.NORTH); //---------------------------------------------------------------- SimplePanel panel=new SimplePanel(); add(panel); } public static int getFlag() { return flag; } public static Color getColorFlag() { return color; } //--------------------------------------------------- //all actionListener private class DrawAction implements ActionListener { private int f; public DrawAction(int i) { f=i; } public void actionPerformed(ActionEvent event) { flag=f; } } private class CleanAction implements ActionListener { public void actionPerformed(ActionEvent event) { SimplePanel.clean(); flag=0; color=Color.BLACK; repaint(); } } private class AddColorAction implements ActionListener { private Color c; public AddColorAction(Color c1) { c=c1; } public void actionPerformed(ActionEvent event) { color=c; } } private class UndoAction implements ActionListener { public void actionPerformed(ActionEvent event) { SimplePanel.removeLast(); repaint(); } } private class MoreColorAction implements ActionListener { public void actionPerformed(ActionEvent event) { Color selected=color; selected=JColorChooser.showDialog(SimpleFrame.this,"Choosing Color",selected); if(selected!=null) color=selected; } } private void write(ObjectOutputStream out,int l,int r,int e) throws IOException { out.writeInt(l); out.writeInt(r); out.writeInt(e); for(LineShape g:SimplePanel.line) out.writeObject(g); for(RectShape g:SimplePanel.rect) out.writeObject(g); for(ElliShape g:SimplePanel.elli) 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?