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());
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.
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")));
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));
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();
}
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"));
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());
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());
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.