Images sur Eclipse

Fermé
Viviprost - 10 juil. 2013 à 11:59
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 - 10 juil. 2013 à 14:28
Bonjour,

En ce moment, j'analyse un code Java. J'ai reste bloque sur une partie du programme... En effet, j'ai réussi a créer un JButton dans la JPannel, j'arrive à effectuer des actions avec mais je n'arrive pas a ajouter une icon a l'intérieur. Je m'excuse si c'est un sujet qui revient...

1) Je créé mon JButton

private JButton newButton;


et j'initialise un String NEWICON = "newIcon";



2) Lorsque j'exécute le programme le JButton passe dans la méthode suivante :


newButton = createButton(NEWICON, this);


Cette méthode contient :

public static JButton createButton(String item, ActionListener listener) 
{
	return (JButton) createAbstractButton(JButton.class, item, listener);
}



3) CreateAbstractButton

private static AbstractButton createAbstractButton(Class<? extends AbstractButton> c,
			String item, ActionListener listener)
 {
	AbstractButton button = (AbstractButton) createObject(c);

	String href = getString(item + "Icon");
	if (href == null)
		button.setText(item);
	else 
        {
		ImageIcon icon = createIcon(href);
		if (icon == null)
			button.setText(item);
		else
			button.setIcon(icon);
	}

		String tip = getString(item + "ToolTip");
		if (tip != null)
			button.setToolTipText(tip);

		button.setFocusPainted(false);
		button.setActionCommand(item);

		button.addActionListener(listener);

		return button;
}



4) Create Icon


public static ImageIcon createIcon(String path) 
{
		java.net.URL url = Jassist.class.getResource(path);
		if (url == null) {
			System.err.println(path + "?");
			return null;
		}
		return new ImageIcon(url);
	}




5) Lorsque que j'arrive dans la méthode CreateAbstracteButton() l'image n'est pas trouvé. Le bouton existe, il contient le texte de la chaine NEWICON mais ça s'arrête la.
Après quelques phases de test j'ai pu constater que le href était NULL mais je ne comprend toujours pas pourquoi...
Pour l'image que j'utilise, c'est une image 16x16 qui se nome newIcon_16x16.png.
Pour la copier, je l'ai glissé de ma page de téléchargement directement dans le package images de Eclipse ouvert.
L'application fonctionne, elle contient déjà plusieurs bouton avec des icons a l'intérieur et reposent toutes sur le protocole que je viens de vous dire.

J'ai de plus essayé de voir le chemin des autres icons avec url.getFile(); (chemin /c:/...) mais même en utilisant se chemin je n'arrive pas a accéder a mon image. Bien sur j'ai vérifié dans le dossier pour voir si elle était bien la.

Merci d'avance pour votre aide.

VP.




3 réponses

Pour les packages :

* Src
------com.resix.netxserv.jassist
------com.resix.netxserv.jassist.images
0
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
10 juil. 2013 à 12:17
C'est bien compliqué tout ça juste pour mettre une icône dans un bouton...

Exemple :

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test 
{
	public static void main(String[] args)
	{
		Icon icon = new ImageIcon("C:/test.png");
		JButton button = new JButton("test",icon);
		
		JFrame frame = new JFrame();
		frame.add(button);
		frame.pack();
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}
0
Je sais, mais c'est une mécanique générale, ce n'est pas qu'un petit bout de code...

Il y a quelque chose qui me chiffonne la dedans.
String href = getString(item + "Icon"); pourquoi rajouter "Icon" ?
0
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
10 juil. 2013 à 14:28
Il faudrait voir le code dans son contexte, avoir une idée générale de tout ce à quoi ça sert, je ne peux que supputer que "newIcon_16x16.png" est un nom générique construit à partit du préfixe "new" qui serait l'objet "item" suivi du mot "Icon" codé en dure, et d'un suffixe "16x16.png" construit automatiquement lors de l'enregistrement de l'image en fonction de sa taille et de son type.
Mais avec aussi peu d'informations ce n'est vraiment qu'une hypothèse !
0