IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Picture JButton Probleme


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Par défaut Picture JButton Probleme
    Salut
    Je n'arrive pas a afficher les icones sur mes JButton.
    Voici le code que j'utilise et qui ne me donne aucune erreur, lorsque je le suis au debbugeur, les propriétés de mes boutons sont bien initialisées, mais rien apparait.
    [code]
    public class PilouButton extends JButton{

    //constructor
    public PilouButton(String iconE, String iconD, String name, String text,
    String com, int x, int y, boolean state) {

    //état
    this.setEnabled(state);

    //icone
    this.setIcon(new ImageIcon(iconE));
    this.setDisabledIcon(new ImageIcon(iconD));

    this.setName(name);
    this.setText(text);
    this.setActionCommand(com);

    this.setVerticalTextPosition(AbstractButton.CENTER);
    this.setHorizontalTextPosition(AbstractButton.CENTER);

    this.setPreferredSize(new Dimension(x,y));
    this.setMinimumSize(new Dimension(10,10));
    this.setMaximumSize(new Dimension(x,y));

    }

    [code]

    Merci pour l'aide
    Pilou

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Par défaut
    Il te manque l'appel du parent.... éssaye de placer un super(); au début du constructeur

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Par défaut Picture button
    Salut
    J'ai ajouté la commande super() dans le constructeur, ça ne marche toujours pas.
    Merci

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Je ne vois pas trop pourquoi ça ne marche pas, mais au pire, essaie de rajouter ça au départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    super(new ImageIcon(iconE));
    Et enlève la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setIcon(new ImageIcon(iconE));
    Assures-toi aussi que iconE existe bien...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    salut,

    verifie aussi que ta variable state soit à la bonne valeur.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Par défaut
    Merci pour votre aide, mais ca ne fonctionne toujours pas....
    Je verrai ca plus tard.
    Bye

  7. #7
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    En fait, il faut que tu spécifies la position de ton texte (verticalement et horizontalement), sinon le texte est écrit par dessus l'icône.
    Voici trois possibilités :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        setVerticalTextPosition(AbstractButton.CENTER);
        setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
     
        setVerticalTextPosition(AbstractButton.BOTTOM);
        setHorizontalTextPosition(AbstractButton.CENTER);
     
        new JButton("Enable middle button", rightButtonIcon);
        //Use the default text position of CENTER, TRAILING (RIGHT).
    bouts de code trouver ici

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Par défaut Picture button
    Salut
    Ca ne focntionne pas non plus....
    Par contre j'ai tracé les variable du bouton avec Eclipse, lorsque j'instancie mon bouton, il me donne dans la propriété defaulticon, le width et height =-1...
    Peut être une piste...

  9. #9
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Chez moi ça fonctionne très bien.
    Voilà le test que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    import java.awt.Dimension;
     
    import javax.swing.AbstractButton;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class PilouButton extends JButton{
     
    //	public PilouButton(String iconE, String iconD, String name, String text,
    	public PilouButton(String name, String text,
    			String com, int x, int y, boolean state) {
     
    		//état
    		this.setEnabled(state);
     
    		//icone
    		this.setIcon(new ImageIcon(ClassLoader.getSystemResource("7x7.gif")));
    		this.setDisabledIcon(new ImageIcon(ClassLoader.getSystemResource("7x7_ddb.gif")));
     
    		this.setName(name);
    		this.setText(text);
    		this.setActionCommand(com);
     
    		this.setVerticalTextPosition(AbstractButton.CENTER);
    		this.setHorizontalTextPosition(AbstractButton.CENTER);
     
    		this.setPreferredSize(new Dimension(x, y));
    		this.setMinimumSize(new Dimension(10, 10));
    		this.setMaximumSize(new Dimension(x, y));
     
    		this.setVerticalTextPosition(AbstractButton.CENTER);
    		this.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
    	}
     
    	public static void main(String[] args){
    		JFrame frame = new JFrame();
    		PilouButton pb = new PilouButton("Name", "Text", "Com", 150, 50, true);
    		JPanel panel = new JPanel();
    		panel.add(pb);
    		frame.getContentPane().add(panel);
    		frame.setVisible(true);
    		frame.pack();
    	}
    }
    Je n'ai pas utilisé des String pour accéder aux images, mais j'ai directement utilisé des icônes stockés dans mon workspace.

    Ces 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		this.setVerticalTextPosition(AbstractButton.CENTER);
    		this.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
    permettent bien de placer l'icône à droite du texte...

    Travailles-tu sous SWING?

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Par défaut Picture button
    Salut
    Ben merci pour tout ça, ca ne fonctionne toujours pas.
    Laissons tombre, je verrai ça plus tard...

    Merci pour tout
    Pilou

  11. #11
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par pilou007
    Salut
    Ben merci pour tout ça, ca ne fonctionne toujours pas.
    Laissons tombre, je verrai ça plus tard...

    Merci pour tout
    Pilou
    Je te conseille de faire un copier/coller du code que j'ai posté juste au-dessus. Je travaille avec le JDK 1.4.2 et SWING, et ça fonctionne parfaitement.

    Je vais même te poster un code qui te permet de vérifier le basculement entre icône active et inactive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.AbstractButton;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class PilouFrame extends JFrame {
    	private JCheckBox cb;
    	private PilouButton pb;
     
     
     
    	public PilouFrame() {
    		pb = new PilouButton("Name", "Text", "Com", 150, 50, true);
    		JPanel panel = new JPanel();
    		panel.add(pb);
     
    		cb = new JCheckBox("enable");
    		cb.setSelected(true);
    		cb.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				changeButtonState();
    			}
    		});
    		panel.add(cb);
    		getContentPane().add(panel);
    	}
     
    	protected void changeButtonState() {
    		pb.setEnabled(cb.isSelected());
    	}
     
    	public static void main(String[] args){
    		PilouFrame frame = new PilouFrame();
    		frame.setVisible(true);
    		frame.pack();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
     
     
     
     
     
    	class PilouButton extends JButton{
     
    //		public PilouButton(String iconE, String iconD, String name, String text,
    		public PilouButton(String name, String text,
    				String com, int x, int y, boolean state) {
     
    			//état
    			this.setEnabled(state);
     
    			//icone
    			this.setIcon(new ImageIcon(ClassLoader.getSystemResource("7x7.gif")));
    			this.setDisabledIcon(new ImageIcon(ClassLoader.getSystemResource("7x7_ddb.gif")));
     
    			this.setName(name);
    			this.setText(text);
    			this.setActionCommand(com);
     
    			this.setVerticalTextPosition(AbstractButton.CENTER);
    			this.setHorizontalTextPosition(AbstractButton.CENTER);
     
    			this.setPreferredSize(new Dimension(x, y));
    			this.setMinimumSize(new Dimension(10, 10));
    			this.setMaximumSize(new Dimension(x, y));
     
    			/**
                             * Choisis l'affichage que tu préfères
                             */
    			//1) à gauche
    //			this.setVerticalTextPosition(AbstractButton.CENTER);
    //			this.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
    			//2) au milieu
    //			setVerticalTextPosition(AbstractButton.BOTTOM);
    //		    setHorizontalTextPosition(AbstractButton.CENTER);
    			//3) à droite
    			setVerticalTextPosition(AbstractButton.CENTER);
    		    setHorizontalTextPosition(AbstractButton.RIGHT);
    		}	
    	}
    }
    La checkBox te permet de passer en mode enable/disable.
    Au lieu de "7x7.gif" et "7x7_ddb.gif", utilises 2 images que tu auras préalablement placées dans ton workspace.

    Si ça ne marche pas chez toi, ben je ne peux plus rien faire pour toi...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JButton] probleme avec les addlistener() ?
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 10/01/2007, 13h11
  2. [JButton] probleme avec les addlistener()
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/01/2007, 20h19
  3. Probleme image sur JButton
    Par LordBob dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/09/2006, 17h26
  4. Probleme JButton et icon
    Par guillaumeM63 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 06/05/2006, 15h13
  5. probleme setbackground() de jbutton sous xp
    Par kliel dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 31/03/2006, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo