Changer d'image au clique
Résolu
skflers61
Messages postés
43
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je créer une application Java avec Swing.
J'ai une ImageIcon qui est dans un JLabel, j'aimerais changer d'image quand je clique dessus.
j'ai deux questions:
1) Quelle est la différence entre ActionListerner et MouseListener? Quelle solution choisir dans mon cas?
2) Que faut-il mettre dans mouseClicked pour changer d'image ?
Merci pour vos réponse
Je créer une application Java avec Swing.
J'ai une ImageIcon qui est dans un JLabel, j'aimerais changer d'image quand je clique dessus.
public class VuePoste extends JPanel implements MouseListener{ private int numeroPoste; private JLabel image; public VuePoste(int numeroPoste){ this.numeroPoste = numeroPoste; image = new JLabel( new ImageIcon( "./ressources/images/PosteVide.png")); this.add(image); this.setBorder(BorderFactory.createTitledBorder("Poste["+numeroPoste+"]")); //Grâce à cette instruction, notre objet va s'écouter //Dès qu'un événement de la souris sera intercepté, il en sera averti this.addMouseListener(this); } @Override public void mouseClicked(MouseEvent arg0) { } }
j'ai deux questions:
1) Quelle est la différence entre ActionListerner et MouseListener? Quelle solution choisir dans mon cas?
2) Que faut-il mettre dans mouseClicked pour changer d'image ?
Merci pour vos réponse
A voir également:
- Changer d'image au clique
- Changer dns - Guide
- Changer carte graphique - Guide
- Image iso - Guide
- Changer wifi chromecast - Guide
- Changer extension fichier - Guide
1 réponse
Bonjour,
1) ActionListener est utilisable par un certain nombre de composants, mais pas tous et ne dispose que d'une seule méthode
MouseListener est elle utilisable par tous les composants (car définie dans Component) et dispose de cinq méthodes
2) Tu peux faire comme ceci :
Remarque : je te conseilles de ne pas mélanger les composants et leurs listeners.
En gros ce code est à éviter :
Il est préférable d'avoir une classe pour le composant, une autre pour le listener :
1) ActionListener est utilisable par un certain nombre de composants, mais pas tous et ne dispose que d'une seule méthode
actionPerformed, l'action à l'origine de l'événement dépendra au composant (voir la documentation pour chacun).
MouseListener est elle utilisable par tous les composants (car définie dans Component) et dispose de cinq méthodes
mouseEntered,
mouseExited,
mousePressed,
mouseReleasedet
mouseClicked, pour gérer tous les événements souris.
2) Tu peux faire comme ceci :
private final JLabel image; private final Icon image1; private final Icon image2; private boolean toggleImage; // ... image1 = new ImageIcon("image1.png"); image2 = new ImageIcon("image2.png"); toggleImage = true; image = new JLabel(image1); // ... @Override public void mouseClicked(MouseEvent e) { toggleImage = !toggleImage; image.setIcon(toggleImage ? image1 : image2); }
Remarque : je te conseilles de ne pas mélanger les composants et leurs listeners.
En gros ce code est à éviter :
public class VuePoste extends JPanel implements MouseListener { public VuePoste(int numeroPoste) { this.addMouseListener(this); } }
Il est préférable d'avoir une classe pour le composant, une autre pour le listener :
public class ToggleImageListener implements MouseListener { private final JLabel image; private final Icon image1; private final Icon image2; private boolean toggleImage; public ToggleImageListener(JLabel image, Icon image1, Icon image2) { this.image = image; this.image1 = image1; this.image2 = image2; toggleImage = true; image.setIcon(image1); } @Override public void mouseClicked(MouseEvent e) { toggleImage = !toggleImage; image.setIcon(toggleImage ? image1 : image2); } } public class VuePoste extends JPanel { private final JLabel image; public VuePoste(int numeroPoste) { image = new JLabel(); Icon image1 = new ImageIcon("image1.png"); Icon image2 = new ImageIcon("image2.png"); addMouseListener(new ToggleImageListener(image, image1, image2)); } }