Java MouseListener

J’ai un groupe de JLabels et je voudrais piéger les événements de clic de souris. pour le moment je dois utiliser:

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

Je me demandais s’il y avait une façon plus ordonnée de faire cela au lieu d’avoir un tas d’événements que je ne souhaite pas piéger?

MODIFIER:

  class MyAdapter extends MouseAdapter { public void mouseClicked(MouseEvent event) { System.out.println(event.getComponent()); } } 

ce qui précède fonctionne, mais NetBeans indique d’append une annotation @override. Qu’est-ce que ça veut dire?

EDIT: ok compris. résolu et résolu.

Utilisez MouseAdapter()

Une classe d’adaptateur abstraite pour recevoir des événements de souris. Les méthodes de cette classe sont vides. Cette classe existe pour faciliter la création d’objects d’audience. Vous devez donc implémenter uniquement la méthode que vous aimez, comme dans l’exemple suivant:

 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(Ssortingng[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new MainClass()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 200); frame.setVisible(true); } } 

On pourrait utiliser une classe MouseAdapter , qui implémente l’interface MouseListener , de sorte qu’il n’est pas nécessaire d’implémenter toutes les méthodes.

Cependant, en ignorant les méthodes qui vous intéressent, vous pouvez obtenir le comportement souhaité. Par exemple, si l’on remplace la méthode mouseClicked , on peut définir un comportement pour l’événement de clic de souris.

Par exemple (code non testé):

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

Dans le code ci-dessus, le JLabel imprimera ” Clicked! ” Sur la console après avoir été cliqué dessus.

Vous pouvez également étendre MouseAdapter et remplacer simplement les événements qui vous intéressent vraiment.

 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(Ssortingng eventDescription, MouseEvent e) { textArea.append(eventDescription + " detected on " + e.getComponent().getClass().getName() + "." + newline); } } 

Vous pouvez hériter de java.awt.event.MouseAdapter et ne remplacer que les méthodes de l’événement ou des événements qui vous intéressent.

un exemple d’événement de souris cliqué,

de la même manière, vous pouvez utiliser mousePressed ou d’autres événements de souris

 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(Ssortingng[] args){ Work1 go1 = new Work1(); go1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); go1.setSize(320,200); go1.setVisible(true); } }