2013-06-21 5 views
0

Ok, j'essaie d'utiliser MouseListener pour la première fois, mais je n'ai pas beaucoup de chance. Mon programme compile bien mais les événements MouseListener ne semblent rien faire. Voici mon code:Impossible de faire fonctionner MouseListener

import java.awt.color.*; 
import java.awt.font.*; 
import java.awt.Graphics; 
import java.awt.Image; 
import javax.swing.*; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 

public class yo implements MouseListener { 

Image image; 
JFrame frame = new JFrame(); 
JLabel heloo = new JLabel("yo"); 
JPanel panel = new JPanel() 
{ 
    @Override 
    public void paintComponent(Graphics g) 
    { 
     //super.paintComponent(g); 
     //ImageIcon i = new ImageIcon("hi.jpg"); 
     //image = i.getImage(); 
     //g.drawImage(image,150,150,null); 
     //g.drawString("Hello",100,100); 
     //g.drawString("Hi",50,50); 
    } 
}; 


public yo() 
{ 
    frame.add(panel); 
    frame.setTitle("Hello"); 
    frame.setSize(500,500); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    frame.setLocationRelativeTo(null); 
    panel.add(heloo); 
} 

public void mouseClicked (MouseEvent Event) 
{ 
    heloo.setText("Hi"); 
    System.out.println("Hi"); 
} 
public void mouseEntered (MouseEvent Event) 
{System.out.println("Hi");} 
public void mouseExited (MouseEvent Event) 
{} 
public void mousePressed (MouseEvent Event) 
{} 
public void mouseReleased (MouseEvent Event) 
{} 

public static void main(String[] args) 
{ 
    new yo(); 
} 
} 

En ne faisant pas tout ce que je veux dire que le système ne fonctionne pas du texte de sortie pour commander en ligne ou changer le JLabel.

Toute aide sur la façon de le faire fonctionner serait super, merci.

p.s. Je suis un noob alors, sois gentil.

+0

Je ne vois nulle part que vous êtes enregistrer l'écouteur de la souris? Essayez quelque chose comme heloo.addMouseListener (new yo()); – MadProgrammer

+0

Je viens de le faire fonctionner, ne vous inquiétez pas. Je viens d'ajouter frame.addMouseListener (this); –

Répondre

0

mis

frame.addMouseListener(this); 

dans le constructeur

+1

Cela ne fonctionnera pas. La classe qui implémente MouseListener n'est pas un composant. – camickr

0

Vous avez fait un yo un MouseListener, mais vous n'avez ajouté à quoi que ce soit.

Vous devez utiliser .addMouseListener(this); sur chaque composant que vous souhaitez écouter.

par exemple.

frame.addMouseListener(this), ou si, dans une méthode statique frame.addMouseListener(myInstanceOfYo);

essayer

public yo() 
{ 
    frame.add(panel); 
    frame.setTitle("Hello"); 
    frame.setSize(500,500); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    frame.setLocationRelativeTo(null); 
    panel.add(heloo); 


    frame.addMouseListener(this); 


} 

Edit:

Je voudrais aussi vous suggérons de changer votre texte de test dans chaque méthode MouseListener être unique, il est donc plus facile de voir qui a été appelé, et quand. De plus, faites en sorte que le nom du paramètre commence par une lettre minuscule (l'événement devient un événement), c'est juste une bonne pratique.

à savoir

public void mouseClicked (MouseEvent event) 
{ 
    heloo.setText("Hi"); 
    System.out.println("Clicked."); 
} 
public void mouseEntered (MouseEvent event) 
{ 
    System.out.println("Entered."); 
} 
public void mouseExited (MouseEvent event) 
{ 
    System.out.println("Exited."); 
} 
public void mousePressed (MouseEvent event) 
{ 
    System.out.println("Pressed."); 
} 
public void mouseReleased (MouseEvent event) 
{ 
    System.out.println("Released."); 
} 
Questions connexes