Insérer une image dans un bouton

Messages postés
41
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
25 janvier 2012
- - Dernière réponse : cs_FreddyONE73
Messages postés
7
Date d'inscription
dimanche 26 juin 2005
Statut
Membre
Dernière intervention
17 janvier 2015
- 17 janv. 2015 à 18:08
Bonjour,

Je voudrais insérer une image sur mon bouton imprimer. Je suis sur eclipse et mon image se trouve dans un dossier Images qui se trouve dans le dossier source de mon projet .Mon image s'apelle "Imprimer1.jpg" Voici mon code ...




merci
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
21
1
Merci
Re,

Effectivement, je t'ai donné un mauvais conseil.
Tu n'as pas d'image car le chemin spécifié est introuvable.

Il faut omettre le nom du dossier source (dont le contenu est dans le classpath) et passer par une URL. De cette manière ton code sera valide même au sein d'un Jar.

URL urlImage = getClass().getResource("/Imprimer1.jpg");
Icon icone = new ImageIcon(urlImage);
JButton imprimer = new JButton(icone);

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 212 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_jojolemariole
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
21
1
Merci
Ce n'est pas une erreur de compilation, mais une erreur à l'exécution.
Ça signifie que le fichier /Images/Imprimer1.jpg n'est pas dans le classpath.

As-tu essayé en mettant juste "/Imprimer1.jpg" ?

Je te rappelle que ton dossier Images doit être un dossier source. De cette manière il sera inclus dans le classpath avec une ligne comme celle-ci dans le fichier .classpath de ton projet :

<classpathentry kind="src" path="Images"/>

Pour être sûr de savoir de quoi on parle, peux-tu nous montrer l'arborescence de ton projet?

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 212 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_jojolemariole
Messages postés
41
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
25 janvier 2012
0
Merci
JButton Imprimer = new JButton(new ImageIcon(Images\Imprimer1.jpg));
Imprimer.setPreferredSize(new Dimension(80,50));
gbc.gridwidth = GridBagConstraints.REMAINDER;;
gbc.gridx = 2;
gbc.gridy = 11;
container.add(Imprimer, gbc);
Commenter la réponse de CdB2006
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
21
0
Merci
Salut,

Quel est ton problème?

Il me semble évident que ta première ligne est incorrecte.
Si tu as créé un dossier source nommé Images dans ton projet je pense que la première ligne devrait plutôt être :

JButton imprimer = new JButton(new ImageIcon("/Images/Imprimer1.jpg"));

Jonathan
Commenter la réponse de cs_jojolemariole
Messages postés
41
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
25 janvier 2012
0
Merci
Merci beaucoup mon code est correct maintenant mais l'image ne s'affiche pas... Peut-être à cause de la resolution de base de l'image qui est de 128*128. j'ai essayé de changer la taille de mon bouton mais rien n'y fait elle ne s'affiche pas. Peux-tu m'aider ?

CdB2006
Commenter la réponse de CdB2006
Messages postés
120
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
24 septembre 2012
0
Merci
Bonjour

voici un exemple de bouton avec icon

private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(218, 21, 129, 33));
jButton1.setIcon(new ImageIcon("Images/Imprimer1.jpg"));
jButton1.setText("   Annuler");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {

 // TODO Auto-generated Event stub actionPerformed()

System.exit(0);
}
});
}
return jButton1;
}



je te conseil de travailler avec visual editor (plugin ) pour vous facilite les tâches au niveau des interface graphique
Commenter la réponse de johnjjj
Messages postés
41
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
25 janvier 2012
0
Merci
Merci jojo mais il me souligne la ligne de l'url et me propose de le changer en java.net.URL et si je fais ca il me mais une erreur pendant la compillation. Dois-je mettre comme chemin d'accès "/Imprimer1.jpg" ou "/Images/Imprimer1.jpg" ?
Commenter la réponse de CdB2006
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
21
0
Merci
Salut,

Oui, il faut importer la classe java.net.URL.
Si ton dossier source est "Images", tu dois mettre "/Imprimer1.jpg".
Quelle est l'erreur de compilation?
Commenter la réponse de cs_jojolemariole
Messages postés
41
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
25 janvier 2012
0
Merci
Voici l'exception :




Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.(Unknown Source)
at fenetreBille.(fenetreBille.java:411)
at fenetreBase$BoutonListener.actionPerformed(fenetreBase.java:77)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Commenter la réponse de CdB2006
Messages postés
41
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
25 janvier 2012
0
Merci
Et ca c'est mon code:


java.net.URL urlImage = getClass().getResource("/Images/Imprimer1.jpg");
Icon icone = new ImageIcon(urlImage);
JButton Imprimer = new JButton(icone);
Imprimer.setPreferredSize(new Dimension(80,50));
gbc.gridwidth = GridBagConstraints.REMAINDER;;
gbc.gridx = 2;
gbc.gridy = 12;
container.add(Imprimer, gbc);
Commenter la réponse de CdB2006
Messages postés
7
Date d'inscription
dimanche 26 juin 2005
Statut
Membre
Dernière intervention
17 janvier 2015
2
0
Merci
Bonjour,

J'avais les mêmes problèmes lorsque je commençais à jouer avec des images, icônes, etc.
Si je me souviens bien, le chemin est relatif à la classe qui l'utilise.
Pour ne pas me prendre la tête, j'utilise une classe "Constantes" (singleton) qui s'occupe de gérer tout ce dont j'ai besoin dans mon appli (textes, couleurs, icône, images, etc.)

Pour faire bref :
la classe Constantes est dans le package fr.monappli
les images, icônes,... sont dans le répertoire fr.monappli.img
Rappel : les packages décrivent l'arborescence des répertoires
dans ma classe Constantes, j'ai le code suivant :
	/**
	 * icone donne acces a des icones pre defini
	 * @author FreddyONE73
	 */
	public enum icones {
		quitter("quitter.png"),
		icon_Appli("icon.png"),
		btn_up("monter.png"),
		btn_suppr("supprimer.png"),
		btn_down("descendre.png");
		private Icon i;
		private icones (String p_fichier_image){
			i = new ImageIcon(Constantes.class.getResource("img/"+p_fichier_image));
		}
		public Icon image(){return i;}
	}


Lorsque j'ai besoin d'un icône, j'utilise par exemple :
JButton btn_monter = new JButton(Constantes.icones.btn_up.image());


Voilà, j'espère avoir été assez claire
Si vous coincer sur "singleton", vous n'aurez pas de mal à trouver, c'est très documenté.

L'avantage de cette solution, c'est qu'il est très facile de gérer toutes les icônes/images... car tout est au même endroit.
Tout est chargé une seule fois. Même si vous utilisez plusieurs fois un icône/image...
les png avec transparence fonctionnent parfaitement.

En espérant avoir été utile à celles et ceux qui arrivent là
Commenter la réponse de cs_FreddyONE73