2012-05-24 20 views
5

Ok, więc mam statyczny ImageIcon, a obraz po prostu się nie wyświetla. W tym samym programie używam innego ImagesIcon ale one nie są statyczne, więc kiedy je zadeklarować to zrobić tak:Czy istnieje alternatywa dla getClass(). GetResource() dla Static ImageIcon

public ImageIcon blabla = new ImageIcon(getClass().getResource(blabla.png)); 

Ale jeśli zadeklarować ImageIcon Static Nie mogę korzystać z tej linii, ponieważ nie można uzyskać Dostęp do getClass() od wartości statycznej. Obecnie obrazy te nie wyświetlają się w następujący sposób:

public static ImageIcon blabla = new ImageIcon(blabla.png); 

Dzięki za pomoc!

public static ImageIcon networkOfflineIcon = new ImageIcon("Images/networkOfflineIcon.png"); 
public static ImageIcon networkIcon = new ImageIcon("Images/networkIcon.png"); 
protected static JMenuItem jmiRemote = new JMenuItem(" Remote", networkOfflineIcon); 
//************************************************************************ 
public static void changeNetWorkStatus(boolean network_status)   
//************************************************************************ 
{ 
    if(network_status){ 
     Application.jmiRemote.setIcon(networkIcon); 
     Application.jmiRemote.setText("NetWork Online/Remote is On"); 
     Application.lockScreenRemote(); 

    }else if(!network_status){ 
     Application.jmiRemote.setIcon(networkOfflineIcon); 
     Application.jmiRemote.setText("NetWork Offline/Remote is Off"); 
     Application.unlockScreenRemote(); 
    } 
}//DOESNT CHANGE THE IMAGE 
//************************************************************************ 
+0

Staraj się unikać rzeczy, jak 'if (T == true)' i 'if (t == false) ', zamiast tego użyj' if (t) 'i' if (! t) '. – rlegendi

Odpowiedz

4

W statycznym kontekście, można napisać:

public ImageIcon imageIcon = new ImageIcon(MyClass.class.getResource("icon.png")); 

Lub alternatywnie spróbować ImageIO.read(new File("icon.png"))

+0

Działa dobrze teraz dziękuję za szybką naprawę, a także uniknę (t == true) – Alex

+0

Oczywiście, cieszę się, że pomogło. – rlegendi

+0

'ImageIO.read' nie jest najlepszą sugestią, ponieważ trzeba wtedy obsługiwać wyjątki, które rzuca. Pozostałbym przy pierwszej sugestii i użyłbym 'MyClass.class'. –

Powiązane problemy