Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
wie lautet denn der Code wenn man ein Applet über ein Button beenden will. Bei einer ganz normalen stand-alone Anwendung ist es zwar System.exit(), aber keine Ahnung bei Applets.
Applets können nicht einfach so beendet werden. Du kannst ein Applet beenden, in dem du entweder den Browser schließt (per Mausklick oder Menüaufruf) oder eine andere Seite lädst.
Das bringt mich auf die Frage, ob es eigentlich erlaubt ist, die stop()- und destroy()-Methode
eines Applets selbst, also vom Applet aus, aufzurufen. ???:L
Es ist erlaubt. Du kannst alle Methoden (bis auf die init()-Methode) des Applet-Lebenszyklusses innerhalb deines Applets aufrufen. Die init()-Methode würde allerdings neue Objekte erzeugen, auf die man keinen Zugriff mehr hat.
Es werden auch alle Methoden ausgeführt. Nur kann ein Applet eben nicht die VM beenden. Bei dem Versuch wird eine AccessControlException geworfen werden. Mach doch einfach mal einen Test.
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class TestApplet extends Applet implements ActionListener {
private Button init, start, stop, destroy;
public void init() {
System.out.println("init()");
setLayout(new GridLayout(2, 2));
init = new Button("init()");
init.addActionListener(this);
add(init);
start = new Button("start()");
start.addActionListener(this);
add(start);
stop = new Button("stop()");
stop.addActionListener(this);
add(stop);
destroy = new Button("destroy()");
destroy.addActionListener(this);
add(destroy);
System.out.println("init() durchlaufen");
}
public void start() {
System.out.println("start()");
}
public void stop() {
System.out.println("stop()");
}
public void destroy() {
System.out.println("destroy()");
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == init)
init();
else if(source == start)
start();
else if(source == stop)
stop();
else if(source == destroy)
destroy();
}
}
Danke für die Mühe den Beispielcode zu schreiben, aber genau das ist
mir schon lange bekannt.
Meine Frage zielte eher darauf, ob ein Applet, daß von sich aus destroy(),
start() oder stop() aufruft, nicht dadurch den Browser durcheinander bringt;
der bekommt davon ja schließlich nichts mit. Und es aus diesem Grund
verboten/nicht empfohlen wird.
Das Applet ruft diese Methoden von sich aus niemals auf.
Die Applet-Methoden aus dem Lebenszyklus werden normalerweise ausschließlich vom Browser selbst aufgerufen.
Der Programmierer kann aber, wie du ja schon weißt, die Methoden auch selbst, wann es ihm beliebt aufrufen. Das interessiert den Browser nicht und bringt ihn auch nicht durcheinander.