Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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_Mouselistener - Fatal编程技术网

Java 爪哇鼠标听器

Java 爪哇鼠标听器,java,mouselistener,Java,Mouselistener,我有一堆jlabel,我想捕获鼠标点击事件。目前,我必须使用: public void mouseClicked(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } public void mouseEntered(MouseEvent arg0) { } public void mousePressed(MouseEvent arg0) { } public void mouseReleased(M

我有一堆jlabel,我想捕获鼠标点击事件。目前,我必须使用:

public void mouseClicked(MouseEvent arg0) {

}

public void mouseExited(MouseEvent arg0) {

}

public void mouseEntered(MouseEvent arg0) {

}

public void mousePressed(MouseEvent arg0) {

}

public void mouseReleased(MouseEvent arg0) {

    System.out.println("Welcome to Java Programming!"); 
}
我想知道是否有一个更整洁的方式来做这件事,而不是有一堆我不希望的事情

编辑:

上述方法有效,但netBeans说add@override anotation。这是什么意思

编辑:好的,明白了。已修复并已解决。

您可以扩展,只需覆盖您真正感兴趣的事件。

可以使用实现接口的类,因此不需要实现所有方法

但是,通过覆盖感兴趣的方法,可以获得所需的行为。例如,如果重写
mouseClicked
方法,则可以为鼠标单击事件定义一些行为

例如(未测试的代码):

在上面的代码中,
JLabel
将在被单击时向控制台打印“
Clicked!
”。

使用
MouseAdapter()

用于接收鼠标事件的抽象适配器类。此类中的方法为空。此类的存在是为了方便创建侦听器对象。 因此,您只需要实现您喜欢的方法,例如以下示例:

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainClass extends JPanel {

  public MainClass() {

      addMouseListener(new MouseAdapter() { 
          public void mousePressed(MouseEvent me) { 
            System.out.println(me); 
          } 
        }); 

  }

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setSize(200, 200);
    frame.setVisible(true);
  }
}

您可以从java.awt.event.MouseAdapter继承,只覆盖您感兴趣的事件的方法。

单击鼠标事件的一些示例

同样,您可以使用鼠标按下或其他鼠标事件

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Work1 extends JFrame{

    private JPanel panelNew;

    public Work1(){
        super("Work 1");


        // create Panel
        panelNew = new JPanel();
        panelNew.setLayout(null);
        panelNew.setBackground(Color.cyan );
        add(panelNew);

        // create Button
        JButton btn = new JButton("click me");
        // position and size of a button
        btn.setBounds(100, 50, 150, 30);

        panelNew.add(btn);


        // add event to button
        btn.addMouseListener(new MouseAdapter() { 
                public void mouseClicked(MouseEvent me) { 

                     // change text of button after click

                     if (btn.getText() == "abraCadabra"){
                          btn.setText("click me again") ;
                     }
                     else  btn.setText("abraCadabra");
                } 
         });        
    }




    public static void main(String[] args){
        Work1 go1 = new Work1();
        go1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        go1.setSize(320,200);
        go1.setVisible(true);   
    }




}

谢谢我很抱歉问这个问题,但我只是从java开始。我想知道如何单独实现MouseAdapter,这样代码就不会内联了?我无法扩展,因为我已经在扩展JFrame。您可以创建一个单独的类,例如,
MyMouseListener
as:
公共类MyMouseListener extends MouseAdapter(){public void mosuePressed(MouseEvent me){//无论您想发生什么}
然后将其作为鼠标侦听器添加到UI代码中:addMouseListener(new MyMouseListener());现在,让新实现的
MyMouseListener
可以使用UI元素的一种方法是通过构造函数参数。如果你想要详细信息/代码,请告诉我。那太好了。我完全按照你说的做了,现在有了这个功能。非常感谢。
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainClass extends JPanel {

  public MainClass() {

      addMouseListener(new MouseAdapter() { 
          public void mousePressed(MouseEvent me) { 
            System.out.println(me); 
          } 
        }); 

  }

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setSize(200, 200);
    frame.setVisible(true);
  }
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Work1 extends JFrame{

    private JPanel panelNew;

    public Work1(){
        super("Work 1");


        // create Panel
        panelNew = new JPanel();
        panelNew.setLayout(null);
        panelNew.setBackground(Color.cyan );
        add(panelNew);

        // create Button
        JButton btn = new JButton("click me");
        // position and size of a button
        btn.setBounds(100, 50, 150, 30);

        panelNew.add(btn);


        // add event to button
        btn.addMouseListener(new MouseAdapter() { 
                public void mouseClicked(MouseEvent me) { 

                     // change text of button after click

                     if (btn.getText() == "abraCadabra"){
                          btn.setText("click me again") ;
                     }
                     else  btn.setText("abraCadabra");
                } 
         });        
    }




    public static void main(String[] args){
        Work1 go1 = new Work1();
        go1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        go1.setSize(320,200);
        go1.setVisible(true);   
    }




}