Partage
  • Partager sur Facebook
  • Partager sur Twitter

MouseListener

Sujet résolu
    20 octobre 2017 à 17:32:21

    Bonjour,

    Je souhaite faire des boutons dont l'icone change quand ils sont survolés par la souris (voir le code ci-dessous). Le code s'effectu sans erreure mais je n'ai aucun changement lors du survol du bouton. 

    package model;
    
    import java.awt.GridBagConstraints;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    
    public class Bouton extends JButton implements MouseListener{
    
    	private static final long serialVersionUID = 1L;
    	private GridBagConstraints gbc = new GridBagConstraints();
    	private String nom;
    	private String cheminImage;
    
    	public Bouton(String nom){
    		super();
    		this.nom = nom;
    		cheminImage = "/" + nom + ".png";
    		
    		//rend le bouton transparent
    		setContentAreaFilled(false);
    		setBorderPainted(false);
    		setFocusPainted(false);
    		
    		//Récupère l'icone à afficher sur le bouton
    		try {
    			setIcon(new ImageIcon(ImageIO.read(getClass().getResource(cheminImage))));
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public GridBagConstraints getGbc() {
    		return gbc;
    	}
    
    	public void setGbc(GridBagConstraints gbc) {
    		this.gbc = gbc;
    	}
    
    	public void mouseEntered(MouseEvent e) {
    		cheminImage = "/" + nom + "_active.png"; 
    	}
    
    	public void mouseExited(MouseEvent e) {
    		cheminImage = "/" + nom + ".png";
    	}
    
    	public void mousePressed(MouseEvent e) {}
    
    	public void mouseReleased(MouseEvent e) {}
    
    	public void mouseClicked(MouseEvent e) {}	
    }
    

    Merci pour vos conseils.

    -
    Edité par @rtur 20 octobre 2017 à 17:33:39

    • Partager sur Facebook
    • Partager sur Twitter
      21 octobre 2017 à 15:52:04

      Salut. Tu n'appelle pas setIcon dans mouseExited et mouseEntered.
      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2017 à 6:47:52

        @Kulturman: Salut, j'ai appelé le setIcon dans mousExited et mouseEntered sans succès. En fait, je peux mettre ce que je veux dans ces deux méthodes, elles ne semblent pas être appelées. Je pensais pourtant que le fait d'implémenter MouseListener était suffisant...
        • Partager sur Facebook
        • Partager sur Twitter
          23 octobre 2017 à 13:37:46

          Tu dois ajouter le listener.

          Bouton b = new Bouton("image");
          b.addMouseListener(b);// Puisque le boton gère ses propres événements MouseListener.



          • Partager sur Facebook
          • Partager sur Twitter
            24 octobre 2017 à 6:52:54

            @kulturman: oui, c'était ça le problème, il fallait ajouter le MouseListener. Merci pour ton aide.
            • Partager sur Facebook
            • Partager sur Twitter

            MouseListener

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown