?? mypaint.java
字號:
//MyPaint.java
package test.paint; // 自定義包
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.undo.*;
import java.io.*;
import java.awt.image.*;
import javax.swing.border.*;
import javax.swing.filechooser.FileFilter;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import javax.imageio.*;
import javax.swing.filechooser.*;
import java.util.ArrayList;
/**
* MyPaint類,繼承JFrame類,
* 作者:曾燕秋
* 初始時間:2007 5-17
* 最后一次修改時間:2007 6-17
*/
public class MyPaint extends JFrame {
/**
* 作者:鐘雯
* 實現文件及圖片的讀寫功能、導出功能
* 初始時間:2007 5-20
* 最后一次修改時間:2007 6-13
*/
//存取格式為zzw的文件
private FileFilter myFilter = new FileFilter() {
public boolean accept(File f) {
if (f.getName().endsWith(".zzw"))
return true;
if (f.isDirectory())
return true;
return false;
}
public String getDescription() {
return "ZZW Files (*.zzw)";
}
};
//導出為png格式的文件格式
private FileFilter secondFilter = new FileFilter() {
public boolean accept(File f) {
if (f.getName().endsWith(".png"))
return true;
if (f.isDirectory())
return true;
return false;
}
public String getDescription() {
return "PNG image files (*.png)";
}
};
private FileFilter jpgFilter = new FileFilter() {
public boolean accept(File f) {
if (f.getName().endsWith(".jpg"))
return true;
if (f.isDirectory())
return true;
return false;
}
public String getDescription() {
return "JPG image files (*.jpg)";
}
};
private String styleNames[] = {
"宋體", "隸書", "華文彩云", "仿宋_GB2312", "華文行楷",
"方正舒體", "Times New Roman", "Serif", "Monospaced",
"SonsSerif","Garamond"
};
private String sizes[] = { "8", "9", "10", "11", "12", "14", "16",
"18", "20", "22", "24", "26" };
private String style1;
private int x1, x2, number; //用來存放當前字體風格
private JMenuBar menuBar;
private JMenu fileMenu;
private JMenu editMenu;
private JMenu imageMenu;
private JMenu colorMenu;
private JMenu helpMenu;
private JMenuItem newItem;
private JMenuItem openItem;
private JMenuItem saveItem;
private JMenuItem emportItem;
private JMenuItem exitItem;
private JMenuItem undoItem;
private JMenuItem redoItem;
private JMenuItem clearItem;
private JMenuItem foregroundItem;
private JMenuItem backgroundItem;
private JMenuItem aboutItem;
private ButtonGroup toolsGroup;
private JPanel ctrlPanel;
private JPanel mediumPanel1;
private JPanel toolsPanel;
private JPanel mediumPanel2;
private JPanel wordPanel;
private JPanel mediumPanel3;
private JPanel fontPanel;
private JPanel sizePanel;
private JPanel mediumPanel4;
private JPanel modelPanel;
private JPanel mediumPanel5;
private JPanel mediumPanel6;
private JPanel brushPanel;
private JPanel circlePanel;
private JPanel squarePanel;
private JToggleButton lineButton;
private JToggleButton rectButton;
private JToggleButton ovalButton;
private JToggleButton diamondButton;
private JToggleButton roundrectButton;
private JToggleButton pencilButton;
private JToggleButton eraserButton;
private JToggleButton polygonButton;
private JToggleButton brushButton;
private JToggleButton wordButton;
private JToggleButton fillButton;
private JToggleButton model1Button;
private JToggleButton model2Button;
private JToggleButton model3Button;
private JToggleButton brush0Button;
private JToggleButton brush1Button;
private JToggleButton brush2Button;
private JToggleButton brush3Button;
private JToggleButton brush4Button;
private JToggleButton brush5Button;
private JCheckBox bold;
private JCheckBox italic;
private JComboBox stylescombo;
private JComboBox sizecombo;
private JComboBox erasercombo;
private JComboBox weightcombo;
private JLabel copyleft;
private JLabel state;
private MyPanel drawPanel; //繪圖區畫板
private JScrollPane scrollpanel;
private JFileChooser filechooser1, filechooser2 ;
Image drawimage = ImageSource.imgDrawpane;
public MyPaint()
{
try
{
initComponents();
}
catch( Exception e ){
e.printStackTrace();
}
}
/**
* 設置各個控件
* @throws Exception
*/
private void initComponents() throws Exception{
GridBagConstraints gridBagConstraints;
menuBar = new JMenuBar();
fileMenu = new JMenu();
editMenu = new JMenu();
imageMenu = new JMenu();
colorMenu = new JMenu();
helpMenu = new JMenu();
newItem = new JMenuItem();
openItem = new JMenuItem();
saveItem = new JMenuItem();
emportItem = new JMenuItem();
exitItem = new JMenuItem();
undoItem = new JMenuItem();
redoItem = new JMenuItem();
clearItem = new JMenuItem();
foregroundItem = new JMenuItem();
backgroundItem = new JMenuItem();
aboutItem = new JMenuItem();
toolsGroup = new ButtonGroup();
ctrlPanel = new JPanel();
mediumPanel1 = new JPanel();
toolsPanel = new JPanel();
mediumPanel2 = new JPanel();
wordPanel = new JPanel();
mediumPanel3 = new JPanel();
fontPanel = new JPanel();
sizePanel = new JPanel();
mediumPanel4 = new JPanel();
modelPanel = new JPanel();
mediumPanel5 = new JPanel();
mediumPanel6 = new JPanel();
brushPanel = new JPanel();
circlePanel = new JPanel();
squarePanel = new JPanel();
lineButton = new JToggleButton();
rectButton = new JToggleButton();
ovalButton = new JToggleButton();
diamondButton = new JToggleButton();
roundrectButton = new JToggleButton();
pencilButton = new JToggleButton();
eraserButton = new JToggleButton();
polygonButton = new JToggleButton();
brushButton = new JToggleButton();
fillButton =new JToggleButton();
wordButton = new JToggleButton();
model1Button = new JToggleButton();
model2Button = new JToggleButton();
model3Button = new JToggleButton();
brush0Button = new JToggleButton();
brush1Button = new JToggleButton();
brush2Button = new JToggleButton();
brush3Button = new JToggleButton();
brush4Button = new JToggleButton();
brush5Button = new JToggleButton();
bold = new JCheckBox();
italic = new JCheckBox();
stylescombo = new JComboBox();
sizecombo = new JComboBox();
erasercombo = new JComboBox();
weightcombo = new JComboBox();
copyleft = new JLabel();
state = new JLabel();
// 聲明相關圖片
Image drawimage = ImageSource.imgDrawpane;
ImageIcon pencilicon = new ImageIcon( ImageSource.imgPencil );
ImageIcon polygonicon = new ImageIcon( ImageSource.imgPolygon );
ImageIcon brushicon = new ImageIcon( ImageSource.imgBrush );
ImageIcon fillicon = new ImageIcon( ImageSource.imgFill );
ImageIcon arcicon = new ImageIcon ( ImageSource.imgArc );
ImageIcon wordicon = new ImageIcon ( ImageSource.imgWord );
ImageIcon model1icon = new ImageIcon ( ImageSource.imgModel1 );
ImageIcon model2icon = new ImageIcon ( ImageSource.imgModel2 );
ImageIcon model3icon = new ImageIcon ( ImageSource.imgModel3 );
ImageIcon circle1icon = new ImageIcon ( ImageSource.imgCircle1 );
ImageIcon circle2icon = new ImageIcon ( ImageSource.imgCircle2 );
ImageIcon circle3icon = new ImageIcon ( ImageSource.imgCircle3 );
ImageIcon square1icon = new ImageIcon ( ImageSource.imgSquare1 );
ImageIcon square2icon = new ImageIcon ( ImageSource.imgSquare2 );
ImageIcon square3icon = new ImageIcon ( ImageSource.imgSquare3 );
JScrollPane scrollpanel = new JScrollPane();
drawPanel = new MyPanel();
this.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
// 將窗口標題設置為Our DrawPanel"
this.setTitle( "Our DrawPanel" );
//為窗口設置圖片
this.setIconImage( drawimage );
state.setHorizontalAlignment(SwingConstants.RIGHT);
state.setHorizontalTextPosition(SwingConstants.LEFT);
state.setText("在畫布上選取圖形對象(鼠標單擊選取,拖拽移動)");
state.setVerticalAlignment(javax.swing.SwingConstants.CENTER);
state.setVerticalTextPosition(javax.swing.SwingConstants.CENTER);
menuBar = new JMenuBar();
/**
* 作者:鐘雯
* 文件的菜單實現
* 初始時間:2007 5-20
* 最后一次修改時間:2007 6-13
*/
// 定義文件菜單
fileMenu = new JMenu( "文件(F)" );
// 定義文件菜單下的相關項目
// 定義新建菜單項,并設置快捷鍵為'N'
newItem = new JMenuItem( "新建(N)", 'N');
//定義打開菜單項,并設置快捷鍵為"O"
openItem = new JMenuItem( "打開(O)", 'O' );
// 定義保存菜單項,并設置快捷鍵為"S"
saveItem = new JMenuItem( "保存(S)", 'S' );
//定義退出菜單,并設置快捷鍵為"X"
exitItem = new JMenuItem( "退出(X)", 'X');
//定義導出菜單項,并設置快捷鍵為"E"
emportItem = new JMenuItem( "導出(E)為*.png", 'E');
//設置新建菜單項的加速器為Ctrl+N
newItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_N, InputEvent.CTRL_MASK ) );
//設置打開菜單項的加速器為Ctrl + O
openItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_O, InputEvent.CTRL_MASK ) );
// 設置保存菜單項的加速器為Ctrl + S
saveItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_S, InputEvent.CTRL_MASK )
);
// 設置保存菜單項的加速器為Ctrl + E
emportItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_E, InputEvent.CTRL_MASK ) );
// 設置退出菜單項的加速器為Ctrl + X
exitItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_X, InputEvent.CTRL_MASK ) );
/**
* 新建菜單項事件的監聽器,用于新建文件
*/
newItem.addActionListener(
new ActionListener(){
public void actionPerformed( ActionEvent e)
{
newButtonActionPerformed(e);
}
}
);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -