📄 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 + -