Insérer une image dans un bouton

CdB2006 Messages postés 41 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 25 janvier 2012 - 18 août 2010 à 10:44
cs_FreddyONE73 Messages postés 4 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

11 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
18 août 2010 à 14:10
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);
2
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
18 août 2010 à 16:30
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?
1
cs_FreddyONE73 Messages postés 4 Date d'inscription dimanche 26 juin 2005 Statut Membre Dernière intervention 17 janvier 2015 3
17 janv. 2015 à 18:08
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à
1
CdB2006 Messages postés 41 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 25 janvier 2012
18 août 2010 à 11:23
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);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
18 août 2010 à 11:54
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
0
CdB2006 Messages postés 41 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 25 janvier 2012
18 août 2010 à 12:01
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
0
johnjjj Messages postés 120 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 24 septembre 2012
18 août 2010 à 12:54
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
0
CdB2006 Messages postés 41 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 25 janvier 2012
18 août 2010 à 14:36
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" ?
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
18 août 2010 à 15:23
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?
0
CdB2006 Messages postés 41 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 25 janvier 2012
18 août 2010 à 15:35
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)
0
CdB2006 Messages postés 41 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 25 janvier 2012
18 août 2010 à 15:37
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);
0
Rejoignez-nous