web-dev-qa-db-fra.com

Comment définir l'icône sur JFrame

J'ai essayé de cette façon, mais ça n'a pas changé?

ImageIcon icon = new ImageIcon("C:\\Documents and Settings\\Desktop\\favicon(1).ico");
frame.setIconImage(icon.getImage());
22
vijay

Mieux vaut utiliser un fichier .png; .ico est spécifique à Windows. Et mieux vaut ne pas utiliser un fichier, mais une ressource de classe (peut être emballée dans le pot de l'application).

URL iconURL = getClass().getResource("/some/package/favicon.png");
// iconURL is null when not found
ImageIcon icon = new ImageIcon(iconURL);
frame.setIconImage(icon.getImage());

Bien que vous puissiez même penser à utiliser setIconImages pour l'icône en plusieurs tailles.

36
Joop Eggen

Essayez de placer vos images dans un dossier séparé en dehors de votre dossier src. Ensuite, utilisez ImageIO pour charger vos images. Ça devrait ressembler à ça:

frame.setIconImage(ImageIO.read(new File("res/icon.png")));
6
user2675678

Cela fonctionne pour moi.

    frame.setIconImage(Toolkit.getDefaultToolkit().getImage(".\\res\\icon.png"));

Pour le fichier jar d'exportation, vous devez configurer le chemin de génération pour inclure le dossier res et utiliser les codes suivants.

    URL url = Main.class.getResource("/icon.png");
    frame.setIconImage(Toolkit.getDefaultToolkit().getImage(url));
2
Joe

Voici le code que j'utilise pour définir l'icône d'un JFrame

import javax.imageio.ImageIO;
import Java.io.File;
import Java.io.IOException;

  try{ 
    setIconImage(ImageIO.read(new File("res/images/icons/appIcon_Black.png")));
  } 
  catch (IOException e){
    e.printStackTrace();
  }
1
Craig Cantrell
public FaceDetection() {
    initComponents();
    //Adding Frame Icon
    try {
        this.setIconImage(ImageIO.read(new File("WASP.png")));
    } catch (IOException ex) {
        Logger.getLogger(FaceDetection.class.getName()).log(Level.SEVERE, null, ex);
    }
}'

cela fonctionne pour moi.

Vous pouvez essayer de suivre la voie,

myFrame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png"));
0
Nilesh Jadav

J'utilise Maven et j'ai la structure du projet, qui a été créé en entrant la commande:

mvn archetype:generate

Le fichier requis icon.png doit être placé dans le src/main/resources dossier de votre projet maven.

Ensuite, vous pouvez utiliser les lignes suivantes à l'intérieur de votre projet:

ImageIcon img = new ImageIcon(getClass().getClassLoader().getResource("./icon.png"));
setIconImage(img.getImage());
0
fedotsoldier

Copiez simplement ces quelques lignes de code dans votre code et remplacez "imgURL" par Image (que vous voulez définir comme icône jframe).

JFrame.setDefaultLookAndFeelDecorated(true);

//Create the frame.
JFrame frame = new JFrame("A window");

//Set the frame icon to an image loaded from a file.
frame.setIconImage(new ImageIcon(imgURL).getImage());
0
Asad Bashir

J'utilise la classe d'utilitaires suivante pour définir l'icône pour les instances JFrame et JDialog :

import Java.awt.*;
import Java.io.IOException;
import Java.io.InputStream;
import Java.net.URISyntaxException;
import Java.util.Scanner;

public class WindowUtilities
{
    public static void setIconImage(Window window)
    {
        window.setIconImage(Toolkit.getDefaultToolkit().getImage(WindowUtilities.class.getResource("/Icon.jpg")));
    }

    public static String resourceToString(String filePath) throws IOException, URISyntaxException
    {
        InputStream inputStream = WindowUtilities.class.getClassLoader().getResourceAsStream(filePath);
        return toString(inputStream);
    }

    // http://stackoverflow.com/a/5445161/3764804
    private static String toString(InputStream inputStream)
    {
        try (Scanner scanner = new Scanner(inputStream, "UTF-8").useDelimiter("\\A"))
        {
            return scanner.hasNext() ? scanner.next() : "";
        }
    }
}

Donc, utiliser cela devient aussi simple que d'appeler

WindowUtilities.setIconImage(this);

quelque part dans votre classe étendant un JFrame.

Le Icon.jpg doit être situé dans myproject\src\main\resources lors de l'utilisation de Maven par exemple.

0
BullyWiiPlaza