Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现鼠标侦听器_Java_Mouseevent_Actionlistener - Fatal编程技术网

Java 如何实现鼠标侦听器

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

有点像是一个noob问题,但话说回来,我是一个noob。我正在尝试实现一种“通用”鼠标侦听器。也就是说,当我单击屏幕上的任何对象时,它会运行特定数量的代码。我有下面的当前解决方案,但是我想要运行的代码对于10个不同的对象是相同的,所以这变得相当乏味

        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,你就可以了。啊,是的,那是另一个组件。是的,差不多就是我最后做的。谢谢你,和我最后做的差不多。谢谢