⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawtest.txt

📁 java编的画图工具
💻 TXT
📖 第 1 页 / 共 2 页
字号:
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 + -