relative Pfadangabe im ImageIcon

the_skywalker

Mitglied
Hallo,

ich habe folgendes Problem. Ich will ein Bild (Image1) in eine Klasse einbinden, und zwar als ImageIcon. Eigentlich funktioniert dies auch, aber nur, wenn ich den absoluten Pfadnamen angebe. Doch später will ich ein jar-File erstellen und dann nützt ein solcher absoluter Pfadname nichts. Kann ich den Pfad auch irgendwie relativ angeben
Folgende Abbildung zeigt die Ordnerstruktur. Das Bild Image1 im Imageordner soll in die Klasse Klasse1 (befindlich im Sourceordner und einem Package) eingebunden werden.



Code:
Projekt 
|----Sourceordner
	 |----Package
		  |----Klasse1
		  |----Imageordner
			   |----Image1

Wie kann ich das Problem lösen

Code:
ImageIcon bild = new ImageIcon("?");
JLabel lab_bild = new JLabel(bild);

MfG

Stefan
 
Zuletzt bearbeitet:
Mach das bild doch mit in die JAR-File.

Dann gibste nur den Pfad in der Jar-File an, z.b. das Bild ist im Order Image im Jar-file
ImageIcon bild=new ImageIcon("Image/bild");

Das gleiche funktioniert auch außerhalb der jar-file. das wird dann immer vom aktuellen Ordner aus gesehen, z.b. dein Class-Datei ist im Ordner Projekt auf C:\ und das Bild im Ordner Image und der im Ordner Projekt, dann kannst du es auch so angegeben.

ImageIcon bild=new ImageIcon("Image/bild");

Das ist dann das gleiche wie

ImageIcon bild=new ImageIcon("C:/Projekt/Image/bild");


Wenn du das ganze in ein JAR-File packst, musst du noch den ClassLoader hinzufügen.

ImageIcon bild=new ImageIcon(ClassLoader.getSystemResource("Image/bild"));



MFG
 
Ich habe folgende Lösung gefunden.
Code:
ImageIcon bild = new ImageIcon(getClass().getResource(
 					"..\\..\\images\\image1.jpg"));
Und es scheint auch zu funktionieren.
 
Hallo,

das Bild mache ich mit ins jar-File. Ich habe mir mal die Struktur des jar-File angeschaut und dort sie die class-Dateien in einem Ordner (entspricht dem package-namen) und das Bild ist im Ordner images. Wenn ich nur
ImageIcon bild = new ImageIcon("images/bild") angebe, dann wird das Bild nicht gefunden. Ich muß erst eine Ordnerebene nach oben, aber wie
Vielleicht mit "..\images\bild".

Ciao
 
Im Jar-File musst du das ja auch so machen

ImageIcon bild=new ImageIcon(ClassLoader.getSystemResource("Image/bild"));

das hab ich aber auch schon oben geschrieben.

Image/bild ist das gleiche wie ./Image/bild

du musst im Jar-File auch auf groß und kleinschreibung achten, d.h. bild.JPG ist nicht das gleiche wie bild.jpg
 
Also mit dem Befehl
Code:
 ImageIcon bild = new ImageIcon(ClassLoader.getSystemResource("images\\Alcatel_log.jpg"));
funktioniert das auch nicht. Da wird eine NullPointerException erzeugt.
 
machst du statt backslash(\\) nen slash (/).

Das muss funktionieren, ich hab das so schon öfter gemacht und es hat jedesmal funktioniert.
 

Neue Beiträge

Zurück