# Applet initialisiert nicht



## VanillaSky (21. Mai 2004)

Hallöchen Leute  

ich bin seit gerade eben neu in diesem Forum und will euch gleich mal mit meinem Problem bombadieren. Und zwar will ich ein Applet schreiben, in dem man 2 Dinge in Textfelder eingibt und die Textarea sie zusammenausspuckt.
Nun hab ich das GUI schon als Frame geschrieben (da hat alles geklappt) und will es jetzt als Applet umwandeln um es in eine HTML Seite einzubinden, aber leider klappt es nicht so ganz. Hier mein Quellcode:

```
import java.awt.*;
import java.applet.*;

public class NameGUI extends Applet
{

	private NameGUI einNameGUI;	//Referenz-Attribut als Klassenattribut
	private String merkeText;

	Name einName;
	AktionsAbhoerer einAbhoerer;
	FensterAbhoerer einFensterAbhoerer;

	Label nEL, hEL, aFL; //Label
	TextField nETF, hETF;//TextFeld
	Button speichernDruckknopf, anzeigenDruckknopf; //Buttons
	TextArea aFTA;	//Anzeigefeld

    //Konstruktor analog zu init()
    public void init()
	{
		setLayout(null);
		setSize(200000,200000);

		//Label
		nEL = new Label("Hier Namenszusatz eingeben:");
		nEL.setBounds(30,30,180,20);
		nEL.setFont(new Font("Courier",Font.BOLD,12));
		add(nEL);

		hEL = new Label("Http-Seite eingeben(optional):");
		hEL.setBounds(30,55,180,20);
		hEL.setFont(new Font("Courier",Font.BOLD,12));
		add(hEL);

		aFL = new Label ("Komplette HTML-Seite:");
		aFL.setBounds(30,105,200,20);
		aFL.setFont(new Font("Courier",Font.BOLD,12));
		add(aFL);

		//TextFeld
		nETF = new TextField();
		nETF.setBounds(250,30,150,20);
		add(nETF);

		hETF = new TextField();
		hETF.setBounds(250,55,150,20);
		add(hETF);

		//Anzeigefeld
		aFTA = new TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY);
		aFTA.setBounds(30,130,360,150);
		aFTA.setForeground(new Color(0));
		add(aFTA);

		//Buttons
		speichernDruckknopf = new Button();
		speichernDruckknopf.setLabel("Speichern");
		speichernDruckknopf.setBounds(30,290,80,40);
		speichernDruckknopf.setBackground(new Color(12632256));
		add(speichernDruckknopf);

		anzeigenDruckknopf = new Button();
		anzeigenDruckknopf.setLabel("Anzeigen");
		anzeigenDruckknopf.setBounds(130,290,80,40);
		anzeigenDruckknopf.setBackground(new Color(12632256));
		add(anzeigenDruckknopf);

		//Neuen Abhoerer erzeugen
		einAbhoerer = new AktionsAbhoerer(this);
		einFensterAbhoerer = new FensterAbhoerer(this);

		//einAbhoerer bei speichernDruckknopf und anzeigenDrucknopf registrieren
		speichernDruckknopf.addActionListener(einAbhoerer);
		anzeigenDruckknopf.addActionListener(einAbhoerer);

		}//Ende Konstruktor

	//Klassenoperation main
	public void start()
	{
		//Erzeugen eines Objekts von NameGUI
		einNameGUI = new NameGUI();
		einNameGUI.setSize(430,350);
		einNameGUI.setVisible(true);
	}//Ende main

	public void speichereName()
	{
		merkeText = nETF.getText();
		nETF.setText("");
		einName = new Name(merkeText);
		einName.setHttpSeite(hETF.getText());
		hETF.setText("");
	}

	public void anzeigenNamen()
	{
		//Anzeugen der Attributinhalte im Textbereich
		//append hängt den Text an den vorhandenen Text an
		merkeText = einName.getHttpSeite();
		aFTA.append(merkeText);
		merkeText = einName.getNamenszusatz();
		aFTA.append(merkeText + "\n");

	}
} //Ende NameGUI
```
Es kompiliert wunderbar aber sobald ich es starte schreibt es unten im Fenster das es nicht initialisiert und wenn ich nun was eingebe, es speichern will und dann in der TArea anzeigen will, tut es gar nix.  ???:L Kann mir jemand helfen?

Vielen Dank im Voraus!!


----------



## L-ectron-X (21. Mai 2004)

Die Meldung in der Statuszeile Deines Browsers deutet auf einen Fehler in der init()-Methode hin. Ich konnte erst mal keinen Fehler im Code finden.
Aber falls Du mit dem Code in der start()-Methode vor hast ein Fenster (Frame) zu erzeugen - das geht nicht.
Dazu müsste die Klasse von Frame abgeleitet worden sein. Und start() ist nicht gleich zu setzen mit main().
Stattdessen kann man aber eine Instanz von Frame nehmen und dort hinein eine Instanz des Applets setzen.
Da Applet von Panel erbt, funktioniert das auch. Deshalb findet der Compiler da auch die setVisible()-Methode in Ordnung, ob wohl sie Dir dort nichts nutzt.


----------



## VanillaSky (21. Mai 2004)

Also ich hab das Applet nochmal gestartet und auf den Fehlercode geachtet, der in der Konsole angezeigt wird. Und zwar:


```
java.lang.NoSuchMethodError: NameGUI.addWindowListener(Ljava/awt/event/WindowListener;)V
at FensterAbhoerer.<init>(FensterAbhoerer.java:15)
at NameGUI.init(NameGUI.java:71)
at sun.applet.AppletPanel.run(AppletPanel.java:353)
at java.lang.Thread.run(Thread.java:534)
```
Ich wollte das Frame, das ich zuerst hatte, nun ganz in ein Applet umwandeln, aber da ich noch ein blutiger Anfänger   bin, wußte ich nicht so ganz, ob das die richtige Abwandlung war.


----------



## L-ectron-X (21. Mai 2004)

Du hast wie es scheint die Methoden des WindowListener in einer anderen Klasse überschrieben und Dir so eine Art WindowAdapter gebaut. Kann man auch machen.
Nur eben nicht in einem Applet. Den WindowListener registiert man an Fensterklassen (üblich sind Frame, JFrame, Dialog und JDialog). Entferne zunächst mal die "FensterAbhoerer".


----------



## VanillaSky (21. Mai 2004)

Okay, ich habe den Window Listener entfernt und nun initialisiert das Applet und es funktioniert auch!!
vielen Dank! Benötigt das Applet keinen Window Listener, weil das Applet sich schließt, wenn man eine andere HTML-Seite öffnet oder warum ist das so?

Auf jeden Fall mal vielen Dank!!


----------



## L-ectron-X (21. Mai 2004)

Applets sind nicht so mächtig, wie Applikationen. Der Aufruf Applet spezifischer Methoden erfolgt durch den Browser.
Das Applet wird gestoppt, wenn eine andere Webseite geladen wird bzw. das Applet aus dem Anzeigebereich gescrollt wird. Beendet wird es, wenn der Browser geschlossen wird.


----------

