[java]代码库import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Board {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Winmain win = new Winmain();
}
}
class Winmain extends JFrame implements ActionListener, MouseMotionListener {// 主窗口
static int pensize, erasersize;// 画笔大小和橡皮大小
static int size;
static Color pencolor;// 画笔颜色
JButton but1, but2, but3, but4;
JPanel panel;
Winmain() {
super("自由画图程序");
this.setSize(250, 150);
setBackground(Color.white);// 背景为白色
Container con = getContentPane();
con.setLayout(new BorderLayout());
JPanel pa = new JPanel();
pa.setLayout(new GridLayout(1, 4));
but1 = new JButton("画笔");// 快速转换到画笔
but1.addActionListener(this);
pa.add(but1);
but2 = new JButton("橡皮");// 快速转换到橡皮
but2.addActionListener(this);
pa.add(but2);
but3 = new JButton("画笔…");// 打开画笔设置界面
but3.addActionListener(this);
pa.add(but3);
but4 = new JButton("橡皮…");// 打开橡皮设置界面
but4.addActionListener(this);
pa.add(but4);
con.add(pa, "North");
panel = new JPanel();
panel.setBackground(Color.white);// 设置背景为白色
panel.addMouseMotionListener(this);
con.add(panel, "Center");
pencolor = Color.black;// 初始画笔颜色为黑色
pensize = 3;// 初始画笔大小半径为3个像素点
erasersize = 5;// 初始橡皮大小半径为5个像素点
size = 3;
setVisible(true);
pack();
}
public static void setpen(int pensize2, Color pencolor2) {// 与设置画笔界面的接口
pensize = pensize2;
pencolor = pencolor2;
size = pensize;
}
public static void seteraser(int erasersize2) {// 与设置橡皮界面的接口
erasersize = erasersize2;
pencolor = Color.white;
size = erasersize;
}
public void actionPerformed(ActionEvent e1) {
if (e1.getSource() == but1) {
pensize = 3;
size = pensize;
pencolor = Color.black;
} else if (e1.getSource() == but2) {
erasersize = 5;
size = erasersize;
pencolor = Color.white;
} else if (e1.getSource() == but3) {// 打开画笔设置界面
Winpen741 w741 = new Winpen741();
w741.setVisible(true);
} else if (e1.getSource() == but4) {// 打开橡皮设置界面
Wineraser742 w742 = new Wineraser742();
w742.setVisible(true);
}
}
public void mouseDragged(MouseEvent e2) {// 拖动鼠标自由作画
int x, y;
x = e2.getX();
y = e2.getY();
Graphics pen;
pen = getGraphics();
pen.setColor(pencolor);
pen.fillOval(x - size + 7, y - size + 56, 2 * size, 2 * size);// +7和+56是为了矫正画笔位置
}
public void mouseMoved(MouseEvent e3) {
}
}
class Winpen741 extends JFrame implements ActionListener {// 设置画笔界面
JButton but, but1, but2, but3, but4, but5, but6;
JTextField tf;
Color c;
int pensize;
Winpen741() {
super();
setSize(300, 150);
Container con = getContentPane();
con.setLayout(new GridLayout(2, 1));
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(2, 3));
but1 = new JButton();
but1.setBackground(Color.pink);
but1.addActionListener(this);
p1.add(but1);
but2 = new JButton();
but2.setBackground(Color.blue);
but2.addActionListener(this);
p1.add(but2);
but3 = new JButton();
but3.setBackground(Color.yellow);
but3.addActionListener(this);
p1.add(but3);
but4 = new JButton();
but4.setBackground(Color.gray);
but4.addActionListener(this);
p1.add(but4);
but5 = new JButton();
but5.setBackground(Color.green);
but5.addActionListener(this);
p1.add(but5);
but6 = new JButton();
but6.setBackground(Color.red);
but6.addActionListener(this);
p1.add(but6);
con.add(p1);
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(1, 3));
JLabel la = new JLabel("输入画笔的大小");
p2.add(la);
tf = new JTextField(16);
p2.add(tf);
but = new JButton("确定");
but.addActionListener(this);
p2.add(but);
con.add(p2);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == but1)
c = Color.pink;
else if (e.getSource() == but2)
c = Color.blue;
else if (e.getSource() == but3)
c = Color.yellow;
else if (e.getSource() == but4)
c = Color.gray;
else if (e.getSource() == but5)
c = Color.green;
else if (e.getSource() == but6)
c = Color.red;
else if (e.getSource() == but) {
String s = null;
s = tf.getText();
pensize = Integer.parseInt(s);
Winmain.setpen(pensize, c);// 返回画笔大小和颜色
this.setVisible(false);
this.dispose();
}
}
}
class Wineraser742 extends JFrame implements ActionListener {// 设置橡皮界面
JTextField tf;
JButton but;
int erasersize;
Wineraser742() {
super();
setSize(300, 150);
Container con = getContentPane();
con.setLayout(new GridLayout(1, 3));
JLabel la = new JLabel("输入橡皮的大小");
con.add(la);
tf = new JTextField(16);
con.add(tf);
but = new JButton("确定");
but.addActionListener(this);
con.add(but);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == but) {
String s = null;
s = tf.getText();
erasersize = Integer.parseInt(s);
Winmain.seteraser(erasersize);// 返回橡皮大小
this.setVisible(false);
this.dispose();
}
}
}