2013-07-23 13 views
9

Dobrze, więc badałem ten jeden cicho. Jestem całkiem nowy w Javie, ale myślałem, że to będzie łatwe. Próbowałem prawie na każdy sposób, na który odpowiedziano na tej stronie i nadal nie ma szczęścia, i zazwyczaj kiedy patrzę tutaj, jestem w stanie znaleźć odpowiedź pasującą do tego, czego szukam. Czy ktoś wie, jak zmienić ikonę Java w górnym rogu JFrame. Jestem całkiem zadowolony, że nie jest to moja ścieżka do pliku, ponieważ wszystkie moje obrazy są w tym samym folderze i wszystkie działają, jest to jedyna, do której nie mogę się dostać.Jak zmienić ikonę Java w JFrame

To jest pierwsza część mojego kodu do głównego menu mojego programu, wszystko działa z wyjątkiem sytuacji, gdy próbuję dodać obraz ikony. Kod, który wprowadziłem poniżej, nie zawiera niczego w JFrame IconImage, usunąłem go, ponieważ nie działał. Więc jeśli jest ktoś, kto wie, jak to działa z tym kodem, który byłby bardzo doceniany, dziękuję bardzo za zaawansowane!

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); 

} 
+0

opublikować ** ** istotne kodu tylko. Nie chcemy przeszukiwać ściany kodu dla części, w której zmienia się ikona ramki. Następnie powiedz nam, czego oczekujesz od tej części kodu i co robi. –

+0

To jest część kodu, w której powinna znajdować się część ikony zmiany. Próbowałem różnych sposobów wprowadzania kodu, ale to jest kod dla JFrame bez kodu ikony zmiany w nim. –

+0

Pokaż najlepszą próbę i powiedz nam, co się stanie. Wskazówki: http://docs.oracle.com/javase/6/docs/api/javax/swing/JFrame.html#setIconImage%28java.awt.Image%29, http://docs.oracle.com/javase/ 6/docs/api/javax/swing/ImageIcon.html # getImage% 28% 29, http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html –

Odpowiedz

14

Mam dla ciebie odpowiedź. Najpierw upewnij się, że obrazy znajdują się w folderze, a nie w pakiecie. Następnie wstawić ten wiersz kodu:

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

Ten kod pobiera obraz ze ścieżki klasy i zwraca go jako ikonę obrazu, a następnie ustawia go. Powinno to dodać ikonę obrazu do aplikacji. Jeśli nie, powiedz mi.

EDYCJA: Po tym, jak powiedziałeś mi, że to nie zadziałało, postanowiłem zrobić drugie pęknięcie ... Najpierw umieść swoje obrazy w całkowicie oddzielnym folderze. Zwykle nazywam to/res. Następnie umieść tam swój obraz. Teraz, aby załadować, wziąłem zupełnie inną trasę. Postanowiłem użyć ImageIO zamiast domyślnego ładowania. Aby załadować zdjęcie, musisz użyć tego kodu:

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

ImageIO działa dużo lepiej dla ładowania obrazów. Jeśli to nadal nie działa, proszę powiedz mi.

Jeśli chcesz wyeksportować ten plik jako plik JAR, umieść folder o tej samej nazwie, co w programie w tym samym katalogu, co plik JAR.

+0

To nie działało dla mnie, upewniłem się nawet, że jest w folderze, a nie w pakiecie –

+0

Gdzie powinienem umieścić go w kodzie i wypróbowałem go tuż pod frame.setDefaultCloseOperation (JFrame .EXIT_ON_CLOSE); –

+0

Miałem wiersz kodu tuż przed frame.setDefaultCloseOperation. W ten sposób wiemy, że ikona jest ustawiona zanim cokolwiek innego się stanie –

2

Na przykład w projekcie NetBeans utwórz folder zasobów w folderze src.

Umieść tam swoje zdjęcia (jpg, ...).

Czy korzystasz ImageIO lub Toolkit (w tym getResource) trzeba to wiodący/w ścieżce do pliku obrazu:

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

Jeśli ten kod jest w twojej klasie JFrame, obraz zostanie dodana do ramki jako ikona na pasku tytułowym.

2

To działa całkiem dobrze dla mnie. Po prostu dodaj to po utworzeniu JFrame.

try { 
    Image image = new ImageIcon("/icons/image.jpg").getImage(); 
    frame.setIconImage(image); 
}catch(Exception e){ 
    System.out.println("Application icon not found"); 
} 
+1

Proszę, unikaj odpowiedzi tylko do kodu. Powinieneś zawsze podać jakieś wyjaśnienie przyczyny problemu w pytaniu, możliwe rozwiązania i przykładowy kod (this). Poświęć trochę czasu, aby pomóc ludziom. –

0
  1. Wklej ikonę obrazu (fav.png) w pierwszym w tym samym opakowaniu,
  2. zapis następujący kod w konstruktora z JFrame.

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

Uwagi: - fav.png jest nazwa ikony

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

wypróbować ten kod umieścić po tym kodzie:

public void displayGUI() 
{ 
Powiązane problemy