wake-up-neo.net

So erhalten Sie ein Bild aus dem 'Resources'-Ordner in NetBeans

Ich habe ein Java-Projekt in NetBeans 7.0.

Ich möchte ein Bild dynamisch zu einem Label hinzufügen. Das Bild variiert je nach Status des Programms.

Ich lege ein solches Bild, "fill.jpg", in den Ressourcenordner meines Projekts.

Ich möchte diese Datei korrekt erreichen (nicht über den absoluten oder relativen Pfad, da dies zu Problemen beim Erstellen der JAR-Datei führen wird).

Also habe ich diese Methode gefunden:

ImageIcon fillingIcon = new ImageIcon(getClass().getClassLoader().getResource("filling.jpg"));
labelFontFilling.setIcon(fillingIcon);

Es gibt mir immer Java.lang.NullPointerException .. Aber ich bin mir sicher, dass es dieses Bild gibt, weil ich das Bild aus dem NetBeans-Menü "Eigenschaften" für dieses Etikett zuweisen kann möchte das Image per Java-Code hinzufügen).

Was mache ich falsch und wie bekomme ich das Bild richtig?

29
ShockwaveNN

Danke, Valter Henrique Mit Ihrem Tipp habe ich festgestellt, dass ich einfach einen falschen Pfad zu diesem Bild eingegeben habe ... In einem meiner Versuche verwende ich

    String pathToImageSortBy = "resources/testDataIcons/filling.png";
    ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));

Aber der richtige Weg war der Name meines Projekts im Pfad zur Ressource

String pathToImageSortBy = "nameOfProject/resources/testDataIcons/filling.png";
ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));
20
ShockwaveNN

Dies war bei der Verwendung von netBeans IDE 7.2 ein Schmerz.

  1. Beachten Sie, dass Netbeans den Build-Ordner bei jedem Neuaufbau bereinigt
  2. Fügen Sie dem Ordner src einen Ressourcenordner hinzu:

    • (Projekt)
      • src
        • projektpaketordner (enthält .Java-Dateien)
        • Ressourcen (welchen Namen Sie wünschen)
        • bilder (optionale Unterordner)
  3. Nach dem Clean/Build wird diese Struktur in den Build-Ordner verschoben:

    • (Projekt)
      • bauen
        • klassen
          • projektpaketordner (enthält generierte .class-Dateien)
          • ressourcen (Ihre Ressourcen)
          • bilder (Ihre optionalen Unterordner)

Zugriff auf die Ressourcen:

dlabel = new JLabel(new ImageIcon(getClass().getClassLoader().getResource("resources/images/logo.png")));

und:

if (common.readFile(getClass().getResourceAsStream("/resources/allwise.ini"), buf).equals("OK")) {

arbeitete für mich Beachten Sie, dass es in einem Fall ein führendes "/" und in dem anderen kein ..__ gibt. Das Wurzel des Pfads zu den Ressourcen ist das "Klassen" Ordner innerhalb des Build-Ordners.

Doppelklicken Sie auf die ausführbare JAR-Datei im Ordner dist. Der Pfad zu den Ressourcen funktioniert immer noch.

45
Jamie

Ich habe einen etwas anderen Ansatz, der für manche nützlich/vorteilhafter sein könnte.

Erstellen Sie unter Ihrem Hauptprojektordner einen Ressourcenordner. Ihre Ordnerstruktur sollte ungefähr so ​​aussehen.

  • Projektordner
    • bauen
    • dist
    • lib
    • nbproject
    • ressourcen
    • src

Gehen Sie zu den Eigenschaften Ihres Projekts. Sie können dies tun, indem Sie im Projektfenster auf der rechten Maustaste auf Ihr Projekt klicken und im Dropdown-Menü Eigenschaften auswählen.

Wählen Sie unter Kategorien auf der linken Seite Quellen aus.

Fügen Sie in Source Package Folders auf der rechten Seite Ihren Ressourcenordner mit der Schaltfläche Ordner hinzufügen hinzu. Wenn Sie auf OK klicken, sollte ein Ressourcenordner unter Ihrem Projekt angezeigt werden.

 enter image description here

Sie sollten jetzt in der Lage sein, Ressourcen anhand dieser Zeile oder eines ähnlichen Ansatzes zu ziehen:

MyClass.class.getResource("/main.jpg");

Wenn Sie im Ressourcenordner ein Paket mit dem Namen Images erstellen, können Sie die Ressource folgendermaßen abrufen:

MyClass.class.getResource("/Images/main.jpg");
20
Matthew Pautzke

Bei mir hat es so funktioniert, als hätte ich Bilder im Ordner icons unter src und habe den folgenden Code geschrieben.

new ImageIcon(getClass().getResource("/icons/rsz_measurment_01.png"));

0
SNB