📄 drawtest.txt
字号:
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 DrawTest6
{
public static void main(String[] args)
{
SimpleFrame frame=new SimpleFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
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)
out.writeObject(g);
}
private void read(ObjectInputStream in) throws IOException,ClassNotFoundException
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -