# Icons einbinden



## KoelschMan (16. Nov 2004)

Hallo Ihrs,
ich möchte mein Applet um eigene Icons für Buttons, etc. erweitern. 
Nun kann ich zum Beispiel ja über Netbeans das sog. FrameIcon modifizieren, in dem ich einen Pfad angebe.
Da mein Applet später einmal auf einem Webserver laufen soll, dessen genaue Adresse ich bis dato noch nicht kenne, müsste ich den Pfad für die Icons ja so eingeben, daß ich nur in mein Unterverzeichnis auf dem WebServer zugreife.

Wenn ich zum Beispiel einen Server habe: www.xyz.com und mein Applet auch direkt unter diesem Pfad zu erreichen wäre, wie müsste ich die Pfadangabe machen, damit ich Server-Namen unabhängig wäre. 

Idealerweise wäre ja eine Variable, die mit beim Start übergeben könnte.

z.B.: String URL = "//www.zxa.com"

oder kann man abfrage, wo man sich befindet und dann den Pfad dynamisch erzeugen??

Gruß
Olli
 ???:L


----------



## L-ectron-X (16. Nov 2004)

Ein Applet kann seine Umgebung "erforschen". Dazu benutzt es die Methoden

```
getDocumentBase()
```
für die Rückgabe des URLs des einbettenden HTML-Dokumentes und

```
getCodeBase()
```
für die Rückgabe des URLs der Bytecode-Datei (.class).
Somit lassen sich passende URLs zusammenbauen, die in andere Verzeichnisse des Rechners zeigen.


----------



## KoelschMan (16. Nov 2004)

hi,
danke für die Info, dies kann ich dann aber nur in den quelltext hacken, wenn ich meine GUI schon fertig habe und dann nicht mehr mit dem GUI Builder von Netbeans dran gehe?? denn der lässt doch solche einstellungen gar nicht zu, ode etwa doch?????  :?: 

Gruß
Olli


----------



## L-ectron-X (16. Nov 2004)

Man kommt mit NetBeans auch an den Quellcode während der Bearbeitung einer GUI mit dem GUI-Builder heran. Nur ist das etwas umständlich gelöst und ich muss auch immer erst probieren.
Schau dazu bitte mal ins _IDE und Tools_ -Forum, dort habe ich dazu schon einige Posts geschrieben.


----------



## KoelschMan (16. Nov 2004)

Hi,
ich habe glaube deinen eintrag gefunden, aber ich verstehe noch nicht so ganz, wenn ich auf custom creation gehe, wo ich dann so rein denke mässig mich im quellcode befinde. Wie gesagt, ich will zumbeispiel Jbutton1 ein frameicon zuweisen. 

Hast du nen tip, wie ich das dann eintippern  muss??


----------



## L-ectron-X (16. Nov 2004)

KoelschMan hat gesagt.:
			
		

> wenn ich auf custom creation gehe, wo ich dann so rein denke mässig mich im quellcode befinde


Das kannst Du mal ausprobieren. Gib einfach mal

```
int test = 0
```
ein und achte darauf, dass Du die Zeile nicht wie üblich mit einem Semikolon abschließt.
Danach lässt Du mal den Compiler drüber laufen und kannst an Hand der Fehlermeldung gleich die Codestelle im Code-Editor betrachten. :wink: 

Wenn Du über _Custom Creation_ Code in das Programm schreibst, wird der Code ziemlich weit oben in die initComponents()-Methode eingefügt. Also da, wo alle Components instanziiert werden.
Dabei wird von NetBeans quasi der eigene Code mit Deinem ersetzt. Man kann also hier ziemlich viel Code einsparen, da man's kürzer schreiben kann. Für Deinen JButton könnte also hier in einem JApplet geschrieben werden:

```
jButton = new javax.swing.JButton("Anzeigen", new ImageIcon(getImage(getDocumentBase(), "anzeigen.gif")));
```
Dabei müsste das Icon im gleichen Verzeichnis wie das HTML-Dokument auf dem Server liegen.



			
				KoelschMan hat gesagt.:
			
		

> Wie gesagt, ich will zumbeispiel Jbutton1 ein frameicon zuweisen.
> Hast du nen tip, wie ich das dann eintippern  muss??


Ansonsten kannst Du jeder Zeit einem JButton ein Icon zuweisen. Dafür gibts die setIcon()-Methode aus JAbstractButton, von der ja JButton erbt.

```
jButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/anzeigen.gif")));
```
Das Icon müsste sich hier unterhalb der .class-Datei in einem Verzeichnis "icons" befinden.

Ich bin mir da aber jetzt nicht sicher, ob diese Variante für ein Applet gültig ist. Für eine Applikation ist sie es.
Daher kannst Du auch noch mal

```
java.awt.Image icon = getImage(getDocumentBase(), "/icons/anzeigen.gif");
jButton.setIcon(new javax.swing.ImageIcon(icon));
```
für ein Applet versuchen, wenn Deine Icons z.B. in einem Verzeichnis namens "icons" unterhalb des HTML-Dokumentes auf dem Webserver liegen.


----------



## KoelschMan (16. Nov 2004)

Hi,
erst einmal danke. Ich werd es versuchen.

In der Hoffnung das es klappt!


----------

