# public void init wird nicht aufgerufen



## The_S (6. Sep 2005)

Ich habe ein Applet, dieses hat eine public void init Methode. Jetzt zeige ich das nur nicht auf gewöhnlichen weg in einer WebSite an, sondern ich zeige es in einem JPanel in einem anderen Applet an. Wenn ich das jetzt dem JPanel adde, wird blöderweiße nicht die public void init Methode aufgerufen, sonst funktioniert aber alles.

Klassen erzeugen und in einer Hashmap speichern


```
void fillClasses() { 

		Wins4 forwins = new Wins4();
		Hangman hang = new Hangman(); 
		TetriX tet = new TetriX();
		Zufallszahl zufall = new Zufallszahl();
		Quiz qz = new Quiz();
		classCollection.put(classes[0], forwins);
		classCollection.put(classes[1], hang);
		classCollection.put(classes[2], tet);
		classCollection.put(classes[3], zufall);
		classCollection.put(classes[4], qz); 
	}
```

Klassen adden


```
public void hyperlinkUpdate(HyperlinkEvent hyl) { 
            ...
				else if (hyl.getDescription().endsWith(".class")) { 
					mainPane.remove(scroll); 
					showAp.removeAll(); 
					showAp.add((JApplet)classCollection.get(hyl.getDescription())); 
					mainPane.add(showAp); 
					validate(); 
					repaint(); 
					panelAk = true; 
					up.show = hyl.getDescription().replaceAll("_", " ").substring(0, hyl.getDescription().length() - 6); 
					up.repaint(); 
				} 
            ...
	}
```

Ausschnitte einer Klasse


```
import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
import java.net.*;
import javax.swing.*; 

public class Hangman extends JApplet implements ActionListener { 
...
    public void init() { 
        
        getWords();
    }
...
}
```

Weiß jemand woran das liegt?


----------



## Guest (6. Sep 2005)

init() wird doch vom Browser aufgerufen und nicht automagisch beim Instanzieren eines Applets.
Oder habe ich dich falsch verstanden? ???:L


----------



## na-oma (7. Sep 2005)

warum rufst du die init-methode nicht selbst auf?

init wird doch nur von browser beim starten eines direkt in die html-seite eingebundenen applets aufgerufen, aber nicht, wenn es irgendwie anders angezeigt wird.
dann bist du quasi der browser der sich um das korrekte aufrufen der methoden kümmern muss...


----------



## Sky (7. Sep 2005)

public void init() hat gesagt.:
			
		

> Called by the browser or applet viewer to inform this applet that it has been loaded into the system. It is always called before the first time that the start method is called. ...


----------



## The_S (7. Sep 2005)

Ah, danke! Das habe ich nicht gewusst! Wie kann ich die Methode selbst zum Start aufrufen? In


```
public MeineKlasse() {
```

kann ichs nicht setzen, weil ich in der init u. a. auf die CodeBase zugreife ...


----------



## Sky (7. Sep 2005)

```
MeinApplet meinApplet = new MeinApplet();
meinApplet.init();
```


----------



## The_S (7. Sep 2005)

Soll ich das dann gleich danach aufrufen, wenn ich das Applet erzeuge, oder erst wenn ich es dem JPanel übergebe? Vermutlich gleich beim erzeugen ... Moment ich teste es mal aus!

[edit] Blöd das! Er meckert, dass er CodeBase nicht kennt. Liegt das daran, dass das Applet nicht direkt in der WebSite selbst eingebettet ist!?


----------



## Sky (7. Sep 2005)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> [edit] Blöd das! Er meckert, dass er CodeBase nicht kennt. Liegt das daran, dass das Applet nicht direkt in der WebSite selbst eingebettet ist!?


Du weißt doch mittlerweile: Bißchen Konkreter werden! Kennt er die Methode nicht oder kann er die CodeBase nicht ermitteln ?


----------



## The_S (7. Sep 2005)

Sry!!!



> java.lang.NullPointerException
> at java.applet.Applet.getCodeBase(Unknown Source)
> at Quiz.setFua(Quiz.java:36)
> at Quiz.init(Quiz.java:85)
> ...



Werds jetzt erstma anders versuchen, indem ich die CodeBase in meinem Hauptapplet auslese und diese dann der Klasse übergebe.


----------



## Sky (7. Sep 2005)

Das Problem wird sein, dass kein AppletStub vorhanden ist.


----------



## The_S (7. Sep 2005)

AppletStub?

Wenn ich die CodeBase im Hauptapplet auslese und dann den anderen Applets übergebe funktionierts! Thx!


----------



## Sky (7. Sep 2005)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> AppletStub?


Ja. Jedes Applet bekommt beim Start ein eigenes Stub gesetzt (siehe auch Interface "AppletStub"). Dies wird vom System gesetzt.

Das AppletStub stellt Methoden wie "getCodeBase" oder auch "getParameter" zur Verfügung. Wenn ein Applet mittels new erzeugt wird, so wird durch das System kein Stub gesetzt und deshalb bekommst Du beim Aufruf dieser Methoden eine NullPointerException.


----------



## The_S (7. Sep 2005)

Ah! Danke für die Erklärung!!!


----------

