web-dev-qa-db-fra.com

Comment changer l'icône Java dans un JFrame

Ok, donc j'ai fait des recherches sur celui-ci un peu. Je suis assez nouveau pour Java mais je pensais que celui-ci serait facile. J'ai essayé à peu près tous les moyens qui ont été répondus sur ce site et toujours pas de chance, et généralement lorsque je regarde ici, je suis en mesure de trouver une réponse qui correspond à ce que je cherche. Est-ce que quelqu'un sait comment changer l'icône Java dans le coin supérieur du cadre JFrame? Je suis assez convaincu que ce n'est pas non plus mon chemin d'accès au fichier, car toutes mes images se trouvent dans le même dossier et qu'elles fonctionnent toutes. C'est la seule qui ne semble pas pouvoir fonctionner.

Ceci est la première partie de mon code pour le menu principal de mon programme, tout fonctionne sauf lorsque j'essaie d'ajouter l'image de l'icône. Le code que j'ai entré ci-dessous ne contient rien pour JFrame IconImage, je l'ai supprimé car il ne fonctionnait pas. Donc, s'il y a quelqu'un qui sait comment le faire fonctionner avec ce code qui serait très apprécié, merci beaucoup à l'avance!

public class MainFrame
{
private MyPanel main;
private MyPanel2 create;
private MyPanel3 update;
private MyPanel4 find;
JFrame frame = new JFrame("Main Menu:");

public void displayGUI()
{
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel contentPane = new JPanel();
    contentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    contentPane.setLayout(new CardLayout());
    main = new MyPanel(contentPane, this);
    create = new MyPanel2(contentPane);
    update = new MyPanel3(contentPane);
    find = new MyPanel4(contentPane);
    contentPane.add(main, "Main Menu");
    contentPane.add(create, "Create Part");
    contentPane.add(update, "Update Part");
    contentPane.add(find, "Find Part");
    frame.setLocation(200, 200);
    frame.setSize(700, 580);
    frame.setContentPane(contentPane);

    frame.setVisible(true);

}
9
Garrett Shaw

J'ai une réponse pour vous. Tout d’abord, assurez-vous que les images se trouvent dans un dossier et non dans un package. Ensuite, insérez cette ligne de code:

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("path/to/image.png"));
ImageIcon icon = new ImageIcon( );
setIconImage(icon.getImage());

Ce code extrait l'image du chemin de classe et la renvoie sous la forme d'une icône d'image, puis le définit. Cela devrait ajouter l'icône de l'image à l'application. Si ce n'est pas le cas, dites-le moi.

EDIT: Après que vous m'ayez dit que cela ne fonctionnait pas, j'ai décidé de tenter une deuxième tentative ... Commencez par placer vos images dans un dossier complètement séparé. J'appelle habituellement ceci/res. Ensuite, mettez votre image là-bas. Maintenant, pour le chargement, j'ai pris un itinéraire complètement différent. J'ai décidé d'utiliser ImageIO au lieu du chargement par défaut. Pour charger l'image, vous utilisez ce code:

try {
    frame.setIconImage(ImageIO.read(new File("res/icon.png")));
}
catch (IOException exc) {
    exc.printStackTrace();
}

ImageIO fonctionne beaucoup mieux pour charger des images. Si cela ne fonctionne toujours pas, merci de me le dire.

Si vous souhaitez l'exporter sous forme de fichier JAR, placez un dossier du même nom que celui que vous avez utilisé dans le programme dans le même répertoire que le fichier JAR.

14
user2675678

Par exemple, dans un projet NetBeans, créez un dossier de ressources dans le dossier src.

Mettez vos images (jpg, ...) dedans.

Que vous utilisiez ImageIO ou Toolkit (y compris getResource), Vous devez inclure un/dans votre chemin d'accès au fichier image:

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/resources/agfa_icon.jpg"));
setIconImage(image);

Si ce code se trouve dans votre classe JFrame, l'image est ajoutée au cadre sous forme d'icône dans la barre de titre.

2
Alain Demortier

Cela fonctionne très bien pour moi. Ajoutez simplement ceci après avoir créé votre JFrame .

try {
   Image image = new ImageIcon("/icons/image.jpg").getImage();
   frame.setIconImage(image);
}catch(Exception e){
   System.out.println("Application icon not found");
}
2
Al-amin Nowshad
  1. Collez d'abord votre icône d'image (fav.png) dans le même paquet,
  2. Écrivez le code suivant dans constructeur de JFrame

setIconImage (Toolkit.getDefaultToolkit (). getImage (getClass (). getResource ("fav.png")));

Remarque: - fav.png est le nom de l'icône

1
ersks
this.setIconImage(new ImageIcon(getClass().getResource("/iconsfolder/iconsname.jpg")).getImage()); 
          // sets the Global icon for the system

essayez ce code mis après ce code: 

public void displayGUI()
{
0
kegs Production