# relativer Pfad



## bad mind (31. Mrz 2005)

Hallo.

Ich habe gerade Minesweeper in Java programmiert. 
Das Programm läuft nun ganz gut nur es einen Nachteil:

Ich lade Icons auf die Buttons um die Mienen usw. darzustellen.
Doch zur Zeit weiß ich nur wie man aus einen absoluten Pfad ladet:


```
public static final String MIENE = "K:\\PUC\\Minesweeper\\Icons\\Miene.jpg";
```

Nun wäre es aber um einiges besser wenn ich einen relativen Pfad (Pfad wo die Klasse bzw. Programm gespeichert ist muss nicht geschrieben werden) benutzen kann, sprich in meinen Fall:

\Icons\Miene.jpg

Hoffe ihr könnt mir helfen. 

Danke


----------



## daLenz (31. Mrz 2005)

hei, du musst das icon nur in deinem projektordner ablegen..also unter deinprojektordner\icons und dann kannst du das icon über \\icons\\deinicon.jpg aufrufen!

greetz


----------



## bad mind (31. Mrz 2005)

Das dachte ich mir auch, doch das haut nicht hin!
Mein Lehrer hat gesagt das man einen Punkt machen muss:

.\\icons\\deinicon.jpg

doch das hat auch nicht fkt.


----------



## Dukel (1. Apr 2005)

Kann man nicht irgendwie Ressorcen einbinden.
Und gibt es nicht $operation.seperator?


----------



## daLenz (1. Apr 2005)

daLenz hat gesagt.:
			
		

> \\icons\\deinicon.jpg !



ou sry, war gestern bissel im stress, und hab da glatt falsch aufgeschrieben! du musst es so machen:

```
new ImageIcon("icons//deinicon.png")
```

greetz


----------



## Bert Brenner (1. Apr 2005)

Dann aber nur mit einem /


----------



## daLenz (1. Apr 2005)

nein, manchmal benötigt es zwei, weil es sonst nicht funktioniert (im zweifellsfalle immer zwei, weil diese sicher erkannt werden...glaub ich )


----------



## bad mind (1. Apr 2005)

ich weiß nicht mach ich was falsch?

Probierte es so, doch es mag immer noch nicht.


```
btNeu.setIcon(new ImageIcon("Icons\\smileyNormal.jpg"));
[code]

So, oder gehört es doch anders (So fkt. es nicht)?
```


----------



## Dukel (1. Apr 2005)

Alles folgende ist aus www.javabuch.de kopier

System.getProperties(file.separator); 	Trennzeichen für die Bestandteile eines Pfadnamens



public InputStream getResourceAsStream(String name)

```
001 /* ImageResource.inc */
002 
003 import java.io.*;
004 import java.awt.*;
005 
006 //...
007 
008 public Image loadImageResource(String pkgname, String fname)
009 throws IOException
010 {
011   Image ret = null;
012   InputStream is = getResourceStream(pkgname, fname);
013   if (is != null) {
014     byte[] buffer = new byte[0];
015     byte[] tmpbuf = new byte[1024];
016     while (true) {
017       int len = is.read(tmpbuf);
018       if (len <= 0) {
019         break;
020       }
021       byte[] newbuf = new byte[buffer.length + len];
022       System.arraycopy(buffer, 0, newbuf, 0, buffer.length);
023       System.arraycopy(tmpbuf, 0, newbuf, buffer.length, len);
024       buffer = newbuf;
025     }
026     //create image
027     ret = Toolkit.getDefaultToolkit().createImage(buffer);
028     is.close();
029   }
030   return ret;
031 }
032 
033 //...
```
	ImageResource.inc
Listing 13.9: Laden einer Image-Ressource


----------



## LazyBoy (2. Apr 2005)

Hey bad mind,
Ich hab auch Minesweeper nachprogrammiert. Und mich würds interessieren wie dus gemacht hast und wies aussieht. Schreib mir doch mal bitte ne  mail an: Lasse.Schneider@gmx.de
Ich zeige dir auch gern meine Version.


----------



## bad mind (2. Apr 2005)

@Dukel

Irgendwie werde ich aus den ganzen nicht schlau!

Mit dieser Methode kann man Images, Icons,... laden, doch muss man erst wieder den Paketnamen angeben..


----------



## Dukel (2. Apr 2005)

bad mind hat gesagt.:
			
		

> @Dukel
> 
> Irgendwie werde ich aus den ganzen nicht schlau!
> 
> Mit dieser Methode kann man Images, Icons,... laden, doch muss man erst wieder den Paketnamen angeben..



Welchen Paketnamen?


----------



## bad mind (2. Apr 2005)

```
public Image loadImageResource(String pkgname, String fname)
```

übergeben werden (laut HdJ): pkgname=Paketname; fname=name des Bildes.


----------



## daLenz (2. Apr 2005)

bad mind hat gesagt.:
			
		

> ```
> btNeu.setIcon(new ImageIcon("Icons\\smileyNormal.jpg"));
> [code]
> [/quote]
> ...


----------



## bad mind (3. Apr 2005)

-->// 
wenn ich dich richtig verstehe soll ich dann schreiben:

btNeu.setIcon(new ImageIcon("Icons// smileyNormal.jpg")); 

doch leider funktioniert das bei mir auch nicht!![/code]


----------



## Roar (3. Apr 2005)

entweder \\ oder / aber nicht //


----------



## bad mind (3. Apr 2005)

fkt. beides nicht!


----------



## Roar (3. Apr 2005)

versuch folgendes:
deine ordnerstruktur:
 - root
      - package
          - ordner bilder
                -bild.png
          - DeineKlasse

dann in DeineKlasse:


```
URL u = DeineKlasse.class.getResource("ordner bilder/bild.png");
Icon bild = new ImageIcon(u);
```


----------



## bad mind (3. Apr 2005)

jep danke das fkt.
und es geht auch wenn ich einen Fileinputstream benutzte, dann wandle ich dass ganze nur mit getPath() um.

Danke


----------

