📄 paintdraw.java
字号:
/**
* @(#)PaintDraw.java
*
*
* @author 曾晓辉
* @version 1.00 2007/7/17
*/
import java.awt.*;
import java.applet.*;
import java.awt.Font;
import java.awt.Point;
import java.awt.geom.*;
import java.awt.Graphics2D;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.JColorChooser;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
import java.net.URL;
import com.sun.image.codec.jpeg.*;
public class PaintDraw extends Canvas implements MouseListener,MouseMotionListener,AdjustmentListener,ItemListener,ActionListener
{ JFrame frame;
JPanel JRadioPanel=new JPanel(); //四块面板,单选按钮面板底部south
JPanel JColorPanel=new JPanel(); //颜色大小面板,西部
JPanel JDrawPanel=new JPanel(); //绘图面板,中间
JPanel JScrollPanel=new JPanel(); //颜色滑动条,东部
JScrollBar r1=new JScrollBar(JScrollBar.VERTICAL,0,4,0,255); //三滑动条值从0~255public JScrollBar(int orientation, int value, int extent,int min,int max)
JScrollBar g1=new JScrollBar(JScrollBar.VERTICAL,0,4,0,255);
JScrollBar b1=new JScrollBar(JScrollBar.VERTICAL,0,4,0,255);
private JMenuBar jb=new JMenuBar(); //菜单栏
private JMenu jm1=new JMenu("文件(F)");
private JMenu jm2=new JMenu("编辑(E)");
private JMenu jm3=new JMenu("帮助(H)");
public JMenuItem jmi1=new JMenuItem("新建(N)");
public JMenuItem jmi2=new JMenuItem("打开(O)");
public JMenuItem jmi3=new JMenuItem("保存(S)");
public JMenuItem jmi4=new JMenuItem("另存为...");
public JMenuItem jmi5=new JMenuItem("退出(E)");
public JMenuItem jmi6=new JMenuItem("剪切(T)");
public JMenuItem jmi7=new JMenuItem("复制(C)");
public JMenuItem jmi8=new JMenuItem("粘贴(P)");
public JMenuItem jmi9=new JMenuItem("旋转(R)");
public JMenuItem jmi10=new JMenuItem("缩放(B)");
public JMenuItem jmi11=new JMenuItem("平移(D)");
public JMenuItem jmi12=new JMenuItem("关于(A)");
JButton color,erase,clear,printscreen; //按钮
ButtonGroup bg=new ButtonGroup(); //单选按钮组
JRadioButton op1=new JRadioButton("任意",true);
JRadioButton op2=new JRadioButton("直线",false);
JRadioButton op3=new JRadioButton("圆",false);
JRadioButton op4=new JRadioButton("矩形",false);
JRadioButton op5=new JRadioButton("三角形",false);
JRadioButton op6=new JRadioButton("多边形",false);
JRadioButton op7=new JRadioButton("弧线",false);
JRadioButton op8=new JRadioButton("圆角矩形",false);
JCheckBox jcb=new JCheckBox("填充"); //定义一个单选框,填充的颜色
BufferedImage image;
Image image2=Toolkit.getDefaultToolkit().getImage("C:\\168.jpg");
Choice sizeChoice,eraseChoice; //两下拉列表,用于选取画笔,橡皮大小
JTextArea tt=new JTextArea(2,3); //文本域,初步用于显示选取颜色
Color c=Color.black; //全局变量定义
Color c2=Color.blue;
boolean flag=false;
boolean fill=false; //是否填充
int f=1; //f=1,任意,f=2直线,f=3圆,f=4矩形,f=5三角形,f=6多边形
int sx,sy,x,y;
int con=1;//初始的画笔颜色
int econ=4;//初始橡皮擦大小
int current=-1;//画三角形和多边形的控制点个数
int n=5;//控制点的个数
int count=0;
float rox;
float scalex;
float translatex;
static double SIZE=12.0;
Point2D [] points=new Point2D[count];
Rectangle2D rect;
AffineTransform AffineTransform1;
BasicStroke size = new BasicStroke(con,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
public PaintDraw()
{ frame=new JFrame("简易绘图");
frame.setDefaultLookAndFeelDecorated(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.getContentPane().setLayout(new BorderLayout());
jm1.add(jmi1); jm1.add(jmi2); jm1.add(jmi3); jm1.add(jmi4); jm1.add(jmi5); jm2.add(jmi6);
jm2.add(jmi7); jm2.add(jmi8); jm2.add(jmi9); jm2.add(jmi10); jm2.add(jmi11); jm3.add(jmi12);
jb.add(jm1);jb.add(jm2);jb.add(jm3);
jm1.setMnemonic(70);jm2.setMnemonic(69);jm3.setMnemonic(72);
jmi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.ALT_MASK));
jmi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.ALT_MASK));
jmi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.ALT_MASK));
jmi5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.ALT_MASK));
jmi6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,ActionEvent.ALT_MASK));
jmi7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.ALT_MASK));
jmi8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,ActionEvent.ALT_MASK));
jmi9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,ActionEvent.ALT_MASK));
jmi10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,ActionEvent.ALT_MASK));
jmi11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,ActionEvent.ALT_MASK));
jmi12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,ActionEvent.ALT_MASK));
jb.setBackground(new Color(142,192,237));
jmi1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JDrawPanel.setBackground(getBackground());
JDrawPanel.setBackground(Color.white);
}
}
);
jmi2.addActionListener(this);
jmi3.addActionListener(this);jmi4.addActionListener(this);
jmi5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame.dispose();
System.exit(0);
}
});
jmi6.addActionListener(this);jmi7.addActionListener(this);jmi8.addActionListener(this);
jmi9.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{ String inputValue = JOptionPane.showInputDialog("请输入旋转的角度");
rox=Float.parseFloat(inputValue);
f=12;
repaint();
}
}
);
jmi10.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String inputValue1 = JOptionPane.showInputDialog("请输入沿x和y轴缩放的因子");
scalex=Float.parseFloat(inputValue1);
f=13;
repaint();
}
}
);
jmi11.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String inputValue2 = JOptionPane.showInputDialog("请输入沿x和y轴平移的距离");
translatex=Float.parseFloat(inputValue2);
f=14;
repaint();
}
}
);
jmi12.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(frame, "这是一个简易绘图程序");
repaint();
}
}
);
frame.setJMenuBar(jb);
JToolBar JTB=new JToolBar();
JButton jbt1=new JButton(new ImageIcon("new.gif"));
/*jbt1.setFont(new Font("楷体",Font.BOLD+Font.CENTER_BASELINE,16));*/
JButton jbt2=new JButton(new ImageIcon("register.gif"));
JButton jbt3=new JButton(new ImageIcon("save.gif"));
JButton jbt4=new JButton("C");
jbt4.setFont(new Font("楷体",Font.BOLD+Font.CENTER_BASELINE,16));
JButton jbt5=new JButton(new ImageIcon("save.gif"));
JButton jbt6=new JButton(new ImageIcon("right.gif"));
JButton jbt7=new JButton(new ImageIcon("middle.gif"));
JButton jbt8=new JButton(new ImageIcon("left.gif"));
JButton jbt9=new JButton(new ImageIcon("sound.gif"));
JButton jbt10=new JButton(new ImageIcon("underline.gif"));
JButton jbt11=new JButton("L");
jbt11.setFont(new Font("楷体",Font.BOLD+Font.CENTER_BASELINE,16));
/*jbt1.setToolTipText("adfasdf");*/
jbt1.setBorder(BorderFactory.createRaisedBevelBorder());
jbt2.setBorder(BorderFactory.createRaisedBevelBorder());
jbt3.setBorder(BorderFactory.createRaisedBevelBorder());
jbt4.setBorder(BorderFactory.createRaisedBevelBorder());
jbt5.setBorder(BorderFactory.createRaisedBevelBorder());
jbt6.setBorder(BorderFactory.createRaisedBevelBorder());
jbt7.setBorder(BorderFactory.createRaisedBevelBorder());
jbt8.setBorder(BorderFactory.createRaisedBevelBorder());
jbt9.setBorder(BorderFactory.createRaisedBevelBorder());
jbt10.setBorder(BorderFactory.createRaisedBevelBorder());
jbt11.setBorder(BorderFactory.createRaisedBevelBorder());
JTB.add(jbt1); JTB.add(jbt2); JTB.add(jbt3); JTB.add(jbt4); JTB.add(jbt5);
JTB.add(jbt6); JTB.add(jbt7); JTB.add(jbt8); JTB.add(jbt9); JTB.add(jbt10);
JTB.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));
frame.getContentPane().add(JTB,BorderLayout.NORTH);
jbt1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f=10;
Color tempColor=JColorChooser.showDialog(frame,"选取渐变颜色1",c2);
if(tempColor!=null)
{
c2=tempColor;
}
repaint();
}
}
);
jbt2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f=11;
repaint();
}
}
);
jbt3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f=15;
}
}
);
jbt4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f=16;
}
}
);
jbt4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f=17;
}
}
);
tt.setEditable(false);tt.setBackground(c);
Color c1=new Color(142,192,237);
op1.setBackground(c1); op2.setBackground(c1); op3.setBackground(c1);
op4.setBackground(c1); op5.setBackground(c1); op6.setBackground(c1);op7.setBackground(c1);op8.setBackground(c1);
bg.add(op1);bg.add(op2);bg.add(op3);bg.add(op4);bg.add(op5);bg.add(op6);bg.add(op7);bg.add(op8);
JRadioPanel.setLayout(new FlowLayout());
JRadioPanel.setBackground(c1);
JRadioPanel.add(op1);JRadioPanel.add(op2);JRadioPanel.add(op3);JRadioPanel.add(op4);
JRadioPanel.add(op5);JRadioPanel.add(op6);JRadioPanel.add(op7);JRadioPanel.add(op8);JRadioPanel.add(jcb);JRadioPanel.add(tt);
frame.getContentPane().add(JRadioPanel,BorderLayout.SOUTH);
op1.addItemListener(this);op2.addItemListener(this);op3.addItemListener(this);
op4.addItemListener(this);op5.addItemListener(this);op6.addItemListener(this);op7.addItemListener(this);op8.addItemListener(this);
jcb.addItemListener(this);
JScrollPanel.setLayout(new GridLayout(1,3));
r1.addAdjustmentListener(this);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -