蓝杰学习02-画板V1.0

    xiaoxiao2025-05-13  13

    今天学习了编写一个简单的画板 思路: (1)先创建一个窗体(这里使用流布局方式),并设置鼠标事件监听器。同时创建一个事件监听类,实现鼠标事件监听接口和动作事件监听接口。 (2)再在窗体里面添加相应图形的按钮,比如直线、椭圆、矩形等,并设置动作事件监听器。 (3)在设置窗体可见之后,再设置监听器(事件监听类的对象)的画布对象。

    具体代码如下:

    1.画板界面类

    import java.awt.FlowLayout; import java.awt.Graphics; import javax.swing.JButton; import javax.swing.JFrame; public class DrawUI { //显示界面的方法 public void showUI() { //创建窗体对象 JFrame drawFrame = new JFrame(); //设置窗体的属性 drawFrame.setTitle("画图板V1.0"); drawFrame.setSize(1500,900); drawFrame.setLocationRelativeTo(null);//位置居中 drawFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//点击关闭会销毁窗体,但不会退出程序 //设置布局为流式布局 drawFrame.setLayout(new FlowLayout()); //创建监听器的对象 DrawListener drawListener = new DrawListener(); //添加监听器 drawFrame.addMouseListener(drawListener); //添加直线按钮 JButton lineBtn = new JButton("直线"); drawFrame.add(lineBtn); lineBtn.addActionListener(drawListener); //添加椭圆按钮 JButton ovalbtn = new JButton("椭圆"); drawFrame.add(ovalbtn); ovalbtn.addActionListener(drawListener); //添加矩形按钮 JButton rectbtn = new JButton("矩形"); drawFrame.add(rectbtn); rectbtn.addActionListener(drawListener); //设置窗体可见 drawFrame.setVisible(true); //获取窗体的画布 Graphics g = drawFrame.getGraphics(); //设置监听器的画布对象 drawListener.setGraphics(g);//调用drawListener类的setGraphics方法 } //主方法 public static void main(String[] args) { //创建窗体对象 DrawUI ui = new DrawUI(); //显示界面 ui.showUI(); } }

    2.监听器类

    import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class DrawListener implements MouseListener,ActionListener{ //画布 private Graphics g ; //记录坐标 int x1,y1,x2,y2; //用来保存图形类型信息 String type = ""; //点击按钮 public void actionPerformed(ActionEvent e) { String action = e.getActionCommand();//返回与此动作相关的命令字符串 //保存图形类型的信息 type = action; } //设置画布的方法,在DrawUI类中传入的Graphics型参数 public void setGraphics(Graphics arg) { g = arg; } public void mousePressed(MouseEvent e) { //记录按下鼠标的坐标 x1 = e.getX(); y1 = e.getY(); } public void mouseReleased(MouseEvent e) { //记录松开鼠标的坐标 x2 = e.getX(); y2 = e.getY(); //根据图形信息绘制相应图形 if("直线".equals(type)) { //画线 g.drawLine(x1, y1, x2, y2); }else if("椭圆".equals(type)) { //画椭圆 g.drawOval(x1, y1, x2-x1, y2-y1); }else if("矩形".equals(type)){ g.drawRect(x1, y1, x2-x1, y2-y1); } } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} }
    最新回复(0)