2013-03-27 11 views
12

Próbowałem w ten sposób, ale to się nie zmieniło?Jak ustawić Icon do JFrame

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

Wygląda na to, że w ścieżce pliku występuje pewien problem. Domyślna ikona obrazu zostanie ustawiona, jeśli nie zostanie znaleziony obraz w określonej ścieżce. – prasanth

Odpowiedz

24

Lepiej użyj pliku .png; .ico jest specyficzne dla Windows. Lepiej nie używać pliku, ale zasobu klasy (można go spakować w słoik aplikacji).

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

Chociaż można nawet pomyśleć o użyciu setIconImages dla ikony w kilku rozmiarach.

+0

Otrzymuję zerowy wskaźnik wyjątku cały czas, mimo że ścieżka obrazu jest poprawna – vijay

+0

Opóźniona odpowiedź: ikona powinna znajdować się w tym samym słoju co klasa, w której jest wywołana getClass(), a ścieżka rozróżnia wielkość liter przy użyciu '/' . –

4

Spróbuj umieścić swoje zdjęcia w oddzielnym folderze poza folderem src. Następnie użyj ImageIO, aby załadować swoje obrazy. Powinno to wyglądać tak:

frame.setIconImage(ImageIO.read(new File("res/icon.png"))); 
+0

Powyższa odpowiedź nie zadziałała, ale to działa! – trinity420

3

W końcu znalazłem główny problem przy ustawianiu ikony jframe. Oto mój kod. Jest podobny do innych kodów, ale tutaj jest kilka rzeczy do zapamiętania w grze.

this.setIconImage(new ImageIcon(getClass().getResource("Icon.png")).getImage()); 

1) Umieść ten kod w JFrame WindowOpened imprezy

2) Umieść obraz w głównym folderze, w którym wszystkie swoje formy i java plików są tworzone na przykład

src\ myproject\ myFrame.form 
src\ myproject\ myFrame.java 
src\ myproject\ OtherFrame.form 
src\ myproject\ OtherFrame.java 
src\ myproject\ Icon.png 

3) I najważniejsze, że nazwa pliku jest wielkość liter to icon.png nie będzie działać, ale Icon.png.

w ten sposób twoja ikona będzie dostępna nawet po ostatecznym zbudowaniu twojego projektu.

-1
frame.setIconImage(new ImageIcon(URL).getImage()); 

/* rama jest JFrame metoda setIcon ustawić nową ikonę w ramce nowego ImageIcon zrobić nową instancję klasy (dzięki czemu można uzyskać nową ikonę z adresu URL, który dajesz) na Ostatnia GetImage zwraca ikonę potrzeba jest to „szybki” sposób na ikonę, dla mnie jest to pomocne, ponieważ jest to jedna linia kodu */

+1

proszę podać wyjaśnienie swojego kodu, w szczególności, co robi i jak rozwiąże problem. –

0

Yon może spróbować po drodze,

myFrame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png")); 
1

Oto kod używam ustawić ikoną 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(); 
    } 
0

Wystarczy skopiować te kilka linijek kodu w kodzie i zastąpić „imgURL” z obrazu (chcesz ustawić jako jframe ikona) miejscu.

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

używam następującą klasę użytkową ustawić ikonę JFrame i JDialog przypadkach:

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

Więc stosując ten staje się tak proste jak wywołanie

WindowUtilities.setIconImage(this); 

gdzieś wewnątrz klasa przedłużająca JFrame.

Numer Icon.jpg musi być umieszczony na przykład w myproject\src\main\resources przy użyciu Maven.

0
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); 
    } 
}' 

to działa dla mnie.

1

To działa dla mnie.

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

W przypadku pliku JAR eksportu należy skonfigurować ścieżkę budowania w celu uwzględnienia folderu res i użyć następujących kodów.

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