Swing ImageIcons von externer Quelle (relativ)

Fori

Mitglied
Hiho liebe "Helferlein"!

Leider lieferten mir Googleanfragen keine wirklich funktionierende Lösung. Vielleicht kann mir hier ja wieder ein erfahrener Java Programmierer helfen.

Es geht darum, dass ich in meinem Programm Bilder verwenden möchte, die erst im späteren Verwendungsverlauf extern auftauchen werden.


Ich habe mich für eine Lösung entschieden, dass die Nutzer einfach nur den Dateinamen des Bildes, was zu dem Datensatz gehört angeben sollen und es in einen bestimmten Ordner tun, und es wird von da aus geladen.


Wie kommt das Image nun also an seinen korrekten Pfad?

Die Jar liegt im Ordner "X", die Klasse befindet sich in Projekt/SRC/Gui/, da Projekt ja beim späteren builden zum Folder der Jar wird, liegt der Bilderordner also wohl in Projekt/Bilder. Dieser soll jedoch nicht im Buildpath sein, da ja im Laufe der Benutzung noch Bilder hinzukommen.

Ich hoffe jemand versteht mein Problem. (Wenn das wirklich kompletter Schwachsinn ist und es wesentlich einfacherere Lösungen gibt, bin ich dafür offen.)

Hier ist, was ich schon getestet habe:

Java:
ImageIcon bild = new ImageIcon("../Bilder/test1.png");
ImageIcon bild = new ImageIcon(this.getClass().getResource("../Bilder/test1.png"));

Leider beides ohne Erfolg. (Ich hatte auch testweise die Zahl der "../" variiert.)

Meine Hibernate.cfg.xml versteht hingegen problemlos, dass die Datenbank nicht innerhalb des Classpath liegt, sondern in einem externen Ordner.

[XML]
<property name="hibernate.connection.url">jdbc:hsqldb:file😀atenbank\DB;shutdown=true;hsqldb.write_delay=false; </property>
[/XML]

Diese Hibernate.cfg.xml liegt direkt im "src" Ordner. Und der Ordner Datenbank wird dann ganz korrekt im Projektfolder erstellt. (Bzw. in dem Ordner, wo sich die Jar befindet)


Danke schonmal für etwaiige Hilfe,

Fori
 
Zuletzt bearbeitet:
Für konkretere Hilfe muss ich erstmal warten, bis der Kaffee wirkt, aber ganz allgemein: Aus einer JAR heraus kann man nicht sinvoll mit relativen Pfaden auf Dinge außerhalb der JAR zugreifen (speziell kommt man nicht mit "..\" an dinge, die "über" der JAR liegen)...
 
Okay, dann habe ich wohl mal wieder ein grundlegendes Missverstädnix mit Java ; )


Dann warte ich mal, bis der Kaffee wirkt : )
 
Wenn während der Benutzung neue Pfade dazukommen, sollte man die doch auch absolut angeben können... Oder man bezieht sich auf irgendein "bekanntes" Verzeichnis, wie user.home... Ansonsten müßtest du die Frage nochmal genauer zusammenfassen...
 
Die Pfade ändern sich eigentlich nicht , es ist immer folgender Pfad:


Der Ordner in dem die Jar liegt hat halt nen Ordner "Bilder". Aus dem soll geladen werden. Aber der Ordner, in dem diese beiden Sachen liegen, soll halt überall liegen können.


LG,

Fori
 
Machs doch so wie eine Menge anderer Programme und leg dir einen Ordner im user.home an und speicher deine Bilder dort.
Ansonsten könntest du dich auch mit der Registry Spielen und dort einen Pfad speichern und dann immer auslesen.
 

Zurück
Oben