relative Pfadangabe zu Bildordner

_Dome_

Mitglied
Hallo zusammen,
ich hab schon gegoogelt und gemacht und bekomme es einfach nicht hin.

Die Situation ist die folgende:

In der Ebene in der sich meine jar-Datei befindet existiert ein Ordner names image und darin sind die Symbole für die Buttons.

Code:
open = new JIconButton("image\\open.png");

Unter Windows werden die Bilder auf den Buttons angezeigt, aber unter Linux (Ubuntu) seh ich "nackte" Buttons.
Es hängt sicherlich mit der Pfadangabe zusammen, aber ich weiß nicht wie...


Schonmal Danke
_dome_
 
Ja Windows verwendet Backslasches als Pfadtrenner, Linux Slashes.

Daher immer File.separator verwenden:
Java:
final String FILE_SEPARATOR = File.separator;
open = new JIconButton("image"+FILE_SEPARATOR+"open.png");

Gleiches gilt für den Zeilenumbruch (\n o.ä):
final String LINE_SEPARATOR = System.getProperty("line.separator");
 
Ich habe es nun so gemacht:

Code:
final String FILE_SEPARATOR = File.separator;
		neu = new JIconButton("image"+FILE_SEPARATOR+"neu.png");
		panelSymbole.add(neu);

Allerdings ist unter Ubuntu der Button immernoch ohne Bild.
So sollte es doch klappen oder?
 
Der Ordner image ist in deinem Ausführungsverzeichnis ja?

Was gibt denn:
Java:
File f = new File("image","open.png");
System.out.println(f.getAbsolutePath() + ": " + f.exists());
aus?
 
Woher kommt denn dein JIconButton?

Ich kenne folgendes:
Java:
JButton button = new JButton(new ImageIcon(f.getAbsolutePath()));
 
Zuweisung:
Code:
final String FILE_SEPARATOR = File.separator;
neu = new JIconButton("image"+FILE_SEPARATOR+"neu.png");

Folgender Konstruktor wird benutzt:
Code:
class JIconButton extends JButton {	

	public JIconButton(String file) {
		super(new ImageIcon(file));
		setContentAreaFilled(false);
		setBorderPainted(true);
		setFocusPainted(false);
	}



}
 
Ich hab eine andere Möglichkeit gefunden - ich hole mir die Bilder aus der Jar-Datei aus dem Image-Ordner.

Und so hab ich es gemacht:

Code:
neu = new JIconButton("image/neu.png");

class JIconButton extends JButton 
        {

	public JIconButton(String file) 
        {
		super(new ImageIcon(GuiMain.class.getResource(file)));	
		setContentAreaFilled(false);
		setBorderPainted(true);
		setFocusPainted(false);
	}

}

So lädt Java die Bilder aus dem Unterverzeichnis "image" die gewünschren Bilder.
 
Zurück