画板 按钮与功能选择

基础步骤:

1.创建一个窗体

2: 给窗体添加鼠标监听器

3: 从窗体上获取一个Graphics 传入监听器中

4: 获取鼠标操作时的坐标

5: 在鼠标释放时绘制直线

如下:

package com.ldy0713;

import javax.swing.*;
import java.awt.*;
public class DrawPad {
    //监听实现  在DrawPad中创建一个DrawListener对象
    DrawListener dl=new DrawListener();
    public void initUI(){
        //界面开发
        //创建JFrame对象  设置标题  设置尺寸  设置关闭方式  设置可视化
        JFrame jf=new JFrame();
        jf.setTitle("画板2.0");
        jf.setSize(500,600);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
        //可视化后用窗体对象调用addMouseListener方法  导入DrawListener对象
        jf.addMouseListener(dl);
        //创建画笔类                 
        Graphics g= jf.getGraphics();
        dl.g2=g;
        System.out.println(g);
    }
        //创建一个程序入口,在程序入口创建DrawPad对象,调用initUI方法
        public static void main(String[] args) {
            DrawPad dp=new DrawPad();
            dp.initUI();
        }
}
package com.ldy0713;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
//创建一个DrawListener类  DrawListener后实现MouseListener接口
public class DrawListener implements MouseListener {
    Graphics g2;
    int x1,y1,x2,y2;
    //重写MouseListener中的五个方法,在每个方法中写一个输出语句用于测试
    public void mousePressed(MouseEvent e){
        x1=e.getX();
        y1=e.getY();
        System.out.println("鼠标按下"+x1+","+y1);
    }
    public void mouseReleased(MouseEvent e) {
        System.out.println("鼠标松开"+x2+","+y2);
        x2=e.getX();
        y2=e.getY();
        //画矩形(坐标连线法 可包含坐标运算)
        g2.drawLine(x1,y1,x2,y2);  
    }
    public void mouseEntered(MouseEvent e){
        System.out.println("鼠标进入");
    }
    public void mouseExited(MouseEvent e){
        System.out.println("鼠标移出");
    }
    public void mouseClicked(MouseEvent e){
        System.out.println("鼠标点击");
    }
}

给窗体上添加按钮 用于选择图形:

1: 给窗体添加按钮 先设置窗体的布局

//......

public class DrawPad {
    public void initUI(){
        JFrame jf=new JFrame();
        jf.setTitle("画板");
        jf.setSize(800,600);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
        //布局&设置
        FlowLayout fl=new FlowLayout();
        jf.setLayout(fl);
        //按钮&添加
        JButton lineBtn=new JButton("直线");
        JButton rectBtn=new JButton("矩形");
        JButton ovalBtn=new JButton("圆");
        JButton triaBtn=new JButton("等腰三角形");
        jf.add(lineBtn);
        jf.add(rectBtn);
        jf.add(ovalBtn);
        jf.add(triaBtn);
        jf.setVisible(true);

//......

2: 给按钮添加监听器 ,监听器类也要实现ActionListener接口

DrawListener中 :


//......

//添加按钮监听
        lineBtn.addActionListener(dl);
        rectBtn.addActionListener(dl);
        ovalBtn.addActionListener(dl);
        triaBtn.addActionListener(dl);
    }
    public static void main(String[] args) {
        DrawPad dp=new DrawPad();
        dp.initUI();
    }
}

 在DrawPad中:

//......

public class DrawListener implements MouseListener, ActionListener {
    Graphics g2;
    int x1,y1,x2,y2;

//.......

//监听按钮
    public void actionPerformed(ActionEvent e) {
    //获取按钮文本
        String btnText=e.getActionCommand();
        System.out.println("点击"+btnText);
    }
}

//......

3: 利用点击按钮时获取的文本在鼠标松开时 判断绘制什么图形


//......

public void mouseReleased(MouseEvent e) {
        System.out.println("鼠标松开" + x2 + "," + y2);
        x2 = e.getX();
        y2 = e.getY();
        if (type.equals("直线")) {
            g2.drawLine(x1, y1, x2, y2);
        } else if (type.equals("矩形")) {
            g2.drawLine(x1, y1, x2, y1);
            g2.drawLine(x1, y1, x1, y2);
            g2.drawLine(x2, y2, x1, y2);
            g2.drawLine(x2, y2, x2, y1);
        } else if (type.equals("圆")) {
            g2.drawOval(x1,y1,Math.abs(x2-x1),Math.abs(y2-y1));
        } else if (type.equals("等腰三角形")) {
            int x=(x1+x2)/2;
            int y=y1;
            g2.drawLine(x,y,x1,y2);
            g2.drawLine(x,y,x2,y2);
            g2.drawLine(x1,y2,x2,y2);
        }
    }
    public void mouseEntered(MouseEvent e) {
        System.out.println("鼠标进入");
    }
    public void mouseExited(MouseEvent e) {
        System.out.println("鼠标移出");
    }
    public void mouseClicked(MouseEvent e) {
        System.out.println("鼠标点击");
    }
    String type="直线";
    //监听按钮
    public void actionPerformed(ActionEvent e) {
    //获取按钮文本
        String btnText=e.getActionCommand();
        System.out.println("点击"+btnText);
    //点击按钮的文本 赋值给type
        type=btnText;

    }

运行结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在JavaFX中实现画板擦除功能可以通过以下步骤来实现: 首先,创建一个JavaFX的画板对象来支持绘图和擦除功能画板可以通过Canvas类来创建。 然后,设置画板的大小和背景颜色,以及添加到JavaFX的场景中显示出来。 接着,定义一个变量来表示是否正在绘制(即鼠标按下时)或者擦除(即按住Ctrl键时鼠标按下)。根据这个变量来确定鼠标拖动时是绘制还是擦除的操作。 接下来,注册鼠标按下、拖动和释放事件的处理程序。当鼠标按下时,根据是否按住Ctrl键来设置绘制还是擦除的模式,并记录下鼠标的位置。当鼠标拖动时,根据模式来绘制或擦除画板上的图形。当鼠标释放时,结束绘制或擦除操作。 最后,将画板添加到JavaFX的窗口中,并显示出来。 通过以上步骤,就可以在JavaFX中实现画板擦除功能。用户可以根据需要选择绘制还是擦除模式,并通过鼠标拖动来实现在画板上进行绘制或擦除操作。 ### 回答2: JavaFX实现画板擦除功能可以通过以下步骤实现: 1. 创建一个JavaFX的画板应用程序。 2. 在画板上使用JavaFX的绘图工具来绘制图形和文字。 3. 实现擦除功能的关键是使用GraphicsContext类的clearRect方法。该方法接受四个参数:起始点的x坐标、y坐标,以及矩形的宽度和高度。调用这个方法可以清除指定区域的图形。 4. 当用户点击画板上的“擦除”按时,设置一个标志来指示擦除模式已启用。 5. 在鼠标按下事件处理程序中,检查擦除模式是否已启用。如果是,则将擦除标志设置为真,并使用clearRect方法擦除鼠标所在的位置。 6. 在鼠标拖动事件处理程序中,如果擦除标志为真,则使用clearRect方法擦除鼠标所在的位置。 7. 在鼠标释放事件处理程序中,将擦除标志设置为假,擦除操作完成。 8. 实现其他必要的功能,如画笔颜色、粗细的调整等。 通过以上步骤,就可以实现JavaFX画板擦除功能。当用户使用鼠标进行绘画操作时,可以通过点击擦除按来切换到擦除模式,在该模式下使用鼠标进行擦除操作。这样就可以实现画板擦除功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值