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

时间:2012-11-15 15:38:27

标签: java events mouse listeners

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

现在,我在名为 Application 的类中创建了Java程序的接口。我在那里定了几个按钮。

这就是我将鼠标监听器添加到应用程序类中的按钮的方法:

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

用的的mousePressed问题是,它不能识别该按钮的名称,如“Button_Square”,“Button_Rectangle”等,这是因为这些按钮已在应用被声明类,而不是< strong> DrawingCanvas 类。

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

3 个答案:

答案 0 :(得分:2)

首先,您可以创建一个DrawingCanvas并将其作为应用程序类中的字段;在这里,我打电话给它canvas。现在,如果所有按钮都执行不同的操作,则可以为它们提供所有不同的MouseListener:

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

});

等......

无需使用不同的对象来确定来源。

答案 1 :(得分:1)

只要您要创建8个不同的侦听器,请使用JButton区分它们。

Button_Square.addMouseListener(new DrawingCanvas(Button_Square));
Button_Square.addMouseMotionListener(new DrawingCanvas(Button_Square));

Button_Rectangle.addMouseListener(new DrawingCanvas(Button_Rectangle));
Button_Rectangle.addMouseMotionListener(new DrawingCanvas(Button_Rectangle));

Button_Circle.addMouseListener(new DrawingCanvas(Button_Circle));
Button_Circle.addMouseMotionListener(new DrawingCanvas(Button_Circle));

Button_Triangle.addMouseListener(new DrawingCanvas(Button_Triangle));
Button_Triangle.addMouseMotionListener(new DrawingCanvas(Button_Triangle));

答案 2 :(得分:0)

您可以阅读在按钮中设置的文本。如果该文本是唯一的,它将识别该按钮。以下是我用来识别和控制JToggleButtons的逻辑。

请注意,一旦有了“摘要”按钮,您就可以使用该按钮执行所需的操作(例如获取/设置背景色),而无需解析text属性。

示例:

void PrintEventProperties(java.awt.event.MouseEvent evt) {
    AbstractButton EventSource = (AbstractButton)evt.getSource();
    System.out.println("Toggled on? " + EventSource.isSelected() );
    System.out.println("ID/text=" + EventSource.getText() );
    System.out.println("Color=" + EventSource.getBackground() );
}