Java - 获取触发 mouseEvent 的按钮的名称

标签 java events mouse listeners

我有一个由几个类组成的 Java 程序。

现在,我在名为Application 的类中制作了Java 程序的接口(interface)。我在那里定义了几个按钮。

这就是我将鼠标监听器添加到 Application 类中的按钮的方式:

我有另一个名为 DrawingCanvas 的类,其中包含许多鼠标事件处理程序。这些事件处理程序之一是 mousePressed。这是 mousePressed 的代码:

mousePressed 的问题在于它无法识别按钮名称,例如“Button_Square”、“Button_Rectangle”等。这是因为这些按钮已在 Application 类中声明,而不是 < strong>DrawingCanvas 类。

请问如何获取触发鼠标事件的按钮的名称?不要忘记声明按钮的类与实现 mouselisteners 和 mousemotionlisteners 的类不同。谢谢:)

最佳答案

首先,您可以创建一个 DrawingCanvas 并将其作为应用程序类中的一个字段;在这里,我将其称为 canvas。现在,如果你所有的按钮做不同的事情,你可以给它们所有不同的 MouseListeners:

Button_Rectangle.addMouseListener(new MouseListener()
{
    public void mousePressed(MouseEvent e)
    {
           if(!e.isControlDown())
           {
                 canvas.Shapes.add(new Rectangle(e.getX(), e.getY()));
           }
    }
    //handle other events, or don't directly implement MouseListener

});

Buuton_Circle.addMouseListener(new MouseListener()
{
    public void mousePressed(MouseEvent e)
    {
           if(!e.isControlDown())
           {
                 canvas.Shapes.add(new Circle(e.getX(), e.getY()));
           }
    }
    //handle other events, or don't directly implement MouseListener

});

等等...

消除了使用不同对象来确定来源的需要。

关于Java - 获取触发 mouseEvent 的按钮的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400914/

相关文章:

java - 让我的矩形随机从我的屏幕上掉下来?

java - 服务提供商的元数据。使用 OpenSAML

macos - Cocoa:如何发送正确的鼠标增量事件?

windows - wxPython - 在没有窗口焦点的情况下捕获鼠标和键盘事件

java - 在抽象类中实现的 Action 监听器不会被扩展它的类继承

java - 查找给定类型的 XML 属性

c# - rx里面有没有ThrottleOrMax之类的东西?

events - 在 Meteor 中从服务器向客户端发送事件

Jquery 的 on 方法出现问题

QT MultiPointTouchArea 不起作用