Java MouseListener

У меня есть куча JLabels, и я хотел бы захватить события щелчка мыши. на данный момент мне приходится использовать:

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!"); 
}

Мне было интересно, есть ли более аккуратный способ сделать это вместо того, чтобы иметь кучу событий, которые мне не нужны?

EDIT:

    class MyAdapter extends MouseAdapter {
    public void mouseClicked(MouseEvent event) {

        System.out.println(event.getComponent());
    }
}

приведенные выше работы, но netBeans говорит add @override anotation. что это значит?

ИЗМЕНИТЬ: ОК получил. исправлена ​​и решена.

Ответы

Ответ 1

Используйте 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);
  }
}

Ответ 2

Можно использовать класс MouseAdapter, который реализует MouseListener, поэтому не нужно реализовывать все методы.

Однако, переопределяя интересующие методы, можно получить желаемое поведение. Например, если один переопределяет метод mouseClicked, тогда можно определить какое-либо поведение для события щелчка мыши.

Например (непроверенный код):

JLabel label = new JLabel("Hello");

label.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
        System.out.println("Clicked!");
    }
});

В приведенном выше коде JLabel будет печатать "Clicked!" на консоли при нажатии.

Ответ 3

Вместо этого вы можете расширить MouseAdapter и просто переопределить события, которые вас действительно интересуют.

Ответ 4

public class MouseEventDemo ... implements MouseListener {
        //where initialization occurs:
        //Register for mouse events on blankArea and the panel.
        blankArea.addMouseListener(this);
        addMouseListener(this);
    ...

    public void mousePressed(MouseEvent e) {
       saySomething("Mouse pressed; # of clicks: "
                    + e.getClickCount(), e);
    }

    public void mouseReleased(MouseEvent e) {
       saySomething("Mouse released; # of clicks: "
                    + e.getClickCount(), e);
    }

    public void mouseEntered(MouseEvent e) {
       saySomething("Mouse entered", e);
    }

    public void mouseExited(MouseEvent e) {
       saySomething("Mouse exited", e);
    }

    public void mouseClicked(MouseEvent e) {
       saySomething("Mouse clicked (# of clicks: "
                    + e.getClickCount() + ")", e);
    }

    void saySomething(String eventDescription, MouseEvent e) {
        textArea.append(eventDescription + " detected on "
                        + e.getComponent().getClass().getName()
                        + "." + newline);
    }
}

Ответ 5

Вы можете наследовать от java.awt.event.MouseAdapter и только переопределять методы для интересующих вас событий.

Ответ 6

какой-нибудь пример нажатия мыши,

таким же образом вы можете использовать mousePressed или другие события мыши

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);   
    }




}