java 画板画图程序

fpy7的头像 fpy7 11 2015-01-06 16:21 0

 基本信息

× 1   

浏览数: 1850

分享时间: 3 年 前

2
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();
        }
    }
}

还没有人评论,赶快来抢沙发吧!