Java-获取触发mouseEvent的按钮的名称
我有一个由几个类组成的Java程序 现在,我在名为Application的类中创建了Java程序的接口。我在这里定义了几个按钮 这就是我如何将鼠标侦听器添加到应用程序中的按钮的方法 我有另一个名为DrawingCanvas的类,其中包含许多鼠标事件处理程序。其中一个事件处理程序是鼠标按下的。下面是鼠标按下的代码: mousePressed的问题在于它无法识别按钮名称,如“button_Square”、“button_Rectangle”等。这是因为这些按钮是在应用程序类中声明的,而不是DrawingCanvas类中声明的Java-获取触发mouseEvent的按钮的名称,java,events,mouse,listeners,Java,Events,Mouse,Listeners,我有一个由几个类组成的Java程序 现在,我在名为Application的类中创建了Java程序的接口。我在这里定义了几个按钮 这就是我如何将鼠标侦听器添加到应用程序中的按钮的方法 我有另一个名为DrawingCanvas的类,其中包含许多鼠标事件处理程序。其中一个事件处理程序是鼠标按下的。下面是鼠标按下的代码: mousePressed的问题在于它无法识别按钮名称,如“button_Square”、“button_Rectangle”等。这是因为这些按钮是在应用程序类中声明的,而不是Drawi
我怎样才能得到触发鼠标事件的按钮的名称?不要忘记声明按钮的类与实现mouselisteners和mousemotionlisteners的类不同。谢谢:)只要你要创建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));
首先,您可以制作一个DrawingCanvas,并将其作为应用程序类中的字段;在这里,我将把它称为
canvas
。现在,如果您所有的按钮都有不同的功能,您可以为它们提供不同的鼠标侦听器:
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
});
等等
无需使用不同的对象来确定源。您可以读取在按钮中设置的文本。如果该文本是唯一的,它将标识该按钮。以下是我用来识别和控制JToggleButtons的逻辑 请注意,一旦有了“抽象”按钮,就可以在不解析文本属性的情况下使用该按钮(例如,获取/设置背景色)执行所需操作 例如:
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() );
}
你刚刚创建了8个DrawingCanvas吗?呃。。我知道我可能在添加鼠标侦听器和鼠标运动侦听器时出错。如何将mouselistener添加到组件中?所有这些侦听器都在DrawingCanvas类中。您可能应该为每个按钮编写一个dispatcher类,该类反过来调用DrawingCanvas类上的方法。我解决了这个问题。我创建了DrawingCanvas一次,每次调用mouselistener都会传递该实例。但是我如何区分按下的按钮呢?