Java 如何实现鼠标侦听器
有点像是一个noob问题,但话说回来,我是一个noob。我正在尝试实现一种“通用”鼠标侦听器。也就是说,当我单击屏幕上的任何对象时,它会运行特定数量的代码。我有下面的当前解决方案,但是我想要运行的代码对于10个不同的对象是相同的,所以这变得相当乏味Java 如何实现鼠标侦听器,java,mouseevent,actionlistener,Java,Mouseevent,Actionlistener,有点像是一个noob问题,但话说回来,我是一个noob。我正在尝试实现一种“通用”鼠标侦听器。也就是说,当我单击屏幕上的任何对象时,它会运行特定数量的代码。我有下面的当前解决方案,但是我想要运行的代码对于10个不同的对象是相同的,所以这变得相当乏味 difference2 = new JLabel(new ImageIcon("transparent.png")); difference2.setBounds(645,490,10,10); //left, to
difference2 = new JLabel(new ImageIcon("transparent.png"));
difference2.setBounds(645,490,10,10); //left, top, width, height
contentPane.add(difference2);
difference2.setVisible(true);
difference2.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e) {
//code
}
});
我知道我可以创建一个单独的方法,如下所示
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null,"this would be nice");
}
但我不知道如何在它的每个对象上设置鼠标侦听器。JOptionPane当前不执行任何操作。您可以创建一个匿名类的实例,该实例扩展了
MouseAdapter
,并将其分配给一个可以重用的变量(myMouseListener
):
您可以创建扩展
MouseAdapter
的匿名类的实例,并将其分配给可以重用的变量(myMouseListener
)
我可能误解了你的问题,但是如果你想在不同的对象上使用相同的mouselistener,你可以将侦听器的实例存储在一个变量中一次,然后将它添加到你想要添加到的任何gui对象中
MouseListener ml = new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {//code}
@Override
public void mousePressed(MouseEvent e) {//code}
@Override
public void mouseExited(MouseEvent e) {//code}
@Override
public void mouseEntered(MouseEvent e) {//code}
@Override
public void mouseClicked(MouseEvent e) {//code}
};
JLabel j1 = new JLabel("Label1");
j1.addMouseListener(ml);
JLabel j2 = new JLabel("Label2");
j2.addMouseListener(ml);
我可能误解了你的问题,但是如果你想在不同的对象上使用相同的mouselistener,你可以将侦听器的实例存储在一个变量中一次,然后将它添加到你想要添加到的任何gui对象中
MouseListener ml = new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {//code}
@Override
public void mousePressed(MouseEvent e) {//code}
@Override
public void mouseExited(MouseEvent e) {//code}
@Override
public void mouseEntered(MouseEvent e) {//code}
@Override
public void mouseClicked(MouseEvent e) {//code}
};
JLabel j1 = new JLabel("Label1");
j1.addMouseListener(ml);
JLabel j2 = new JLabel("Label2");
j2.addMouseListener(ml);
不确定这是否与我刚找到的解决方案相同。。。无论如何,我的解决方案是添加imgName.addMouseListener(这个);然后我的方法正常工作了Y,如果你的类扩展了MouseAdapter或实现了MouseListener,你可以。啊,是的,那是另一个组件不确定这是否与我刚才找到的解决方案相同。。。无论如何,我的解决方案是添加imgName.addMouseListener(这个);然后我的方法正常工作了,如果你的类扩展了MouseAdapter或者实现了MouseListener,你就可以了。啊,是的,那是另一个组件。是的,差不多就是我最后做的。谢谢你,和我最后做的差不多。谢谢