当前位置: 首页 > 知识库问答 >
问题:

如何响应鼠标点击形状[关闭]

林国安
2023-03-14

我想创建一个小功能

    null
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import javax.swing.JComponent;

public class Line extends JComponent {

   private final Point2D start, end;

    public Line( Point2D start, Point2D end){
        this.start = start;
        this.end = end;
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("mouse clicked");
            }
        });
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.BLACK);
        g2.setStroke(new BasicStroke(2.0F));
        g2.draw(new Line2D.Double(start,end));
    }
}

共有1个答案

琴献
2023-03-14

你通过把一个问题分解成更小的问题来解决它。
您需要做的第一件事是识别在一行上的鼠标单击。
实现它的一种方法是使用一个自定义组件,如下所示:

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import javax.swing.JComponent;

public class Line extends JComponent {

   private final Point2D start, end;

    public Line( Point2D start, Point2D end){
        this.start = start;
        this.end = end;
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("mouse clicked");
            }
        });
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.BLACK);
        g2.setStroke(new BasicStroke(2.0F));
        g2.draw(new Line2D.Double(start,end));
    }
}

尝试使用它在JPanel上绘制一条线。
尝试绘制几条线并确定单击了哪条线。
之后,尝试移动单击的行。

 类似资料:
  • 我正在开发一个实践应用程序,当你在画布内单击时,它会将蓝色方块添加到画布中。其中一个要求是在该点添加形状,鼠标代表新形状的中心。 默认情况下,鼠标的单击点将位于正方形的左上角。有没有办法让正方形从鼠标点击的中心而不是右上角生成? 这是我目前将我的方块添加到画布的方式:

  • 我想知道如何编写代码来检测鼠标点击精灵。例如:

  • 问题内容: 如标题所示,我很难在JApplet中绘制一些矩形(填充的)。确切的目标是拥有一张50x50的表格,并在您 点击目标单元格时将其填充(可以通过绘制一个填充的矩形来完成)。我已经完成了有关起点坐标的数学运算, 但是由于某些原因,我无法在MouseClicked方法中绘制新矩形。有什么建议? 问题答案: 这是一个相对简单的概念(没有冒犯性)。 首先,请勿将代码与JApplet和混合使用JFr

  • 但是,鼠标中键不是由Vaadin注册的。我怎么才能让这个起作用?

  • 问题内容: 我想知道是否可以在Python(Windows)中显示某些图片,然后用鼠标单击该图片并获得此点击相对于图片边缘的坐标。 谢谢! 问题答案: 是的,一旦您了解了tkinter,这是可能并且非常容易的,这是一个快速脚本: 未经编辑的它将使用默认的窗口坐标系打印到控制台。画布小部件将左上角设为0,0点,因此您可能需要弄混printcoords函数。要获取加载的图片尺寸,可以使用canvas.

  • 本文向大家介绍python点击鼠标获取坐标(Graphics),包括了python点击鼠标获取坐标(Graphics)的使用技巧和注意事项,需要的朋友参考一下 使用Python进行图像编程,要使用到Graphics库。下面列举出较常用的代码 接下来使用Graphics库进行编写 出现下面问题:name '_name_'is not defined.出现原因是下划线应该是两个(__'name'__)