Wie zu set icon-Bild für eine swing-Anwendung?

Ich habe gesehen, viele verschiedene Beispiele, die zeigen, wie ein JFrame ist IconImage so dass die Anwendung verwendet das Symbol anstelle des standard-Kaffeebecher. Keiner von Ihnen arbeiten für mich.

Hier "mein" code (stark entlehnt aus anderen posts und im internet):

public class MyApp extends JFrame
{
    public MyApp()
    {
        ImageIcon myAppImage = loadIcon("myimage.jpg");
        if(myAppImage != null)
            setIconImage(myAppImage.getImage());
    }

    private ImageIcon loadIcon(String strPath)
    {
        URL imgURL = getResource(strPath);
        if(imgURL != null)
            return new ImageIcon(imgURL);
        else
            return null;
    }
}

Dieser code nicht unten in loadIcon wenn Sie einen Anruf tätigen, um die getResource() Methode. Für mich gibt es nur 2 Möglichkeiten: (1) die myImage.jpg ist im falschen Verzeichnis, oder (2) getResource() mag es nicht, etwas über mein Bild (ich hatte es zu konvertieren von CMYK zu RGB in Photoshop so könnte ich das gleiche Bild an anderer Stelle mit ImageIO.)

Habe ich die System.out.println(new File(".").getAbsolutePath()); trick, um suchen Sie das Verzeichnis, wo das Bild in JPG gespeichert werden soll, und noch nichts gearbeitet. Ich habe anschließend platziert die JPG-Datei in jedes Verzeichnis in meinem Projekt, nur um zu regieren Speicherort der Datei als die Täter.

So, dass hinterlässt bei mir zu glauben, dass es etwas gibt, dass getResource() mag es nicht, über die JPG-Datei selbst. Aber ich habe jetzt schon erschöpft mein Verständnis von Bildern und Symbolen in der mächtigen, weiten Welt des Swing.

Meine JPG lädt Geldstrafe in anderen image-Viewern, so dass ausgeschlossen sowie. Jemand irgendwelche Ideen?

Vielen Dank im Voraus!

  • Um zu überprüfen, ob das problem mit der URL versuchen: System.out.println("estimated number of bytes in the file = " + imgURL.openStream().available());.
  • Dank toto2 - nun endlich sind wir irgendwo immer! Diese Zeile wirft eine exception mit der Nachricht "null"... einfach der schlechteste und am wenigsten hilfreichen exception-Nachricht, die ich je gesehen habe. Irgendwelche Hinweise?
  • available ist nicht ein rock-solid-Methode nach api, so können wir nicht schließen viel. Sie könnten versuchen, split openStream().avalaible() über zwei verschiedene Linien zu sehen, wo der Fehler ist aus. Meine Vermutung ist, dass dein Bild ist in Ordnung, aber nicht gefunden werden kann. Da Sie über NetBeans, können Sie auch einen Blick auf dieses tutorial.
  • Warum tut man nichts für Sie arbeiten? Warum nicht die Vorschläge in diesem posting (stackoverflow.com/questions/7181699/...) für Sie arbeiten wenn Sie für alle anderen auch?? Warum kannst du nicht ein post SSCCE wie Sie schon gefragt worden zu tun vor??? Wir sind NICHT dagegen, die Leser, die wir nicht erraten können, warum es funktioniert, für alle anderen und nicht für Sie!!!
  • Camickr bitte unterlassen Sie das posten von Antworten/Reaktionen auf meine Fragen in der Zukunft.
  • Sorry, ich übel nehmen wenn die Leute weiterhin Fragen stellen, ohne alle notwendigen Informationen, die benötigt werden um das problem zu lösen. Sie weiter verschwenden die Zeit von jedem, der sich Zeit nimmt zum Lesen dieser Frage. Nicht nur, dass Sie die Nerven dazu haben, senden Sie mir eine direkte E-Mail von meinem blog um Hilfe zu bitten, wenn Sie nicht wollen, mir zu helfen, Ihr hier!

InformationsquelleAutor IAmYourFaja | 2011-08-25
Schreibe einen Kommentar