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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10159.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论