Java Language
Applets
Suche…
Einführung
Applets sind seit der offiziellen Veröffentlichung Teil von Java und werden seit einigen Jahren zum Unterrichten von Java und zum Programmieren verwendet.
In den letzten Jahren gab es einen aktiven Anstoß, sich von Applets und anderen Browser-Plugins zu entfernen. Einige Browser blockierten sie oder unterstützten sie nicht aktiv.
Im Jahr 2016 kündigte Oracle an, das Plugin "In ein Plugin-Free-Web wechseln" abzulehnen
Neuere und bessere APIs sind jetzt verfügbar
Bemerkungen
Ein Applet ist eine Java-Anwendung, die normalerweise in einem Webbrowser ausgeführt wird. Die Grundidee besteht darin, mit dem Benutzer zu interagieren, ohne mit dem Server interagieren und Informationen übertragen zu müssen. Dieses Konzept war um das Jahr 2000 sehr erfolgreich, als die Internetkommunikation langsam und teuer war.
Ein Applet bietet fünf Methoden zur Steuerung des Lebenszyklus.
Methodenname | Beschreibung |
---|---|
init() | wird einmal aufgerufen, wenn das Applet geladen wird |
destroy() | wird einmal aufgerufen, wenn das Applet aus dem Speicher entfernt wird |
start() | wird aufgerufen, wenn das Applet sichtbar wird |
stop() | wird aufgerufen, wenn das Applet von anderen Fenstern überlappt wird |
paint() | wird bei Bedarf aufgerufen oder manuell durch Aufruf von repaint() ausgelöst |
Minimales Applet
Ein sehr einfaches Applet zeichnet ein Rechteck und druckt eine Zeichenfolge auf dem Bildschirm.
public class MyApplet extends JApplet{
private String str = "StackOverflow";
@Override
public void init() {
setBackground(Color.gray);
}
@Override
public void destroy() {}
@Override
public void start() {}
@Override
public void stop() {}
@Override
public void paint(Graphics g) {
g.setColor(Color.yellow);
g.fillRect(1,1,300,150);
g.setColor(Color.red);
g.setFont(new Font("TimesRoman", Font.PLAIN, 48));
g.drawString(str, 10, 80);
}
}
Die Hauptklasse eines Applets reicht von javax.swing.JApplet
.
Vor Java 1.2 und der Einführung der Swing-API-Applets hatte sich java.applet.Applet
.
Applets erfordern keine Hauptmethode. Der Einstiegspunkt wird vom Lebenszyklus gesteuert. Um sie verwenden zu können, müssen sie in ein HTML-Dokument eingebettet sein. Dies ist auch der Punkt, an dem ihre Größe definiert wird.
<html>
<head></head>
<body>
<applet code="MyApplet.class" width="400" height="200"></applet>
</body>
</html>
Erstellen einer GUI
Applets können leicht zum Erstellen einer GUI verwendet werden. Sie awt
wie ein Container
und haben eine add()
Methode, die beliebige awt
oder swing
Komponenten übernimmt.
public class MyGUIApplet extends JApplet{
private JPanel panel;
private JButton button;
private JComboBox<String> cmbBox;
private JTextField textField;
@Override
public void init(){
panel = new JPanel();
button = new JButton("ClickMe!");
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
if(((String)cmbBox.getSelectedItem()).equals("greet")) {
JOptionPane.showMessageDialog(null,"Hello " + textField.getText());
} else {
JOptionPane.showMessageDialog(null,textField.getText() + " stinks!");
}
}
});
cmbBox = new JComboBox<>(new String[]{"greet", "offend"});
textField = new JTextField("John Doe");
panel.add(cmbBox);
panel.add(textField);
panel.add(button);
add(panel);
}
}
Öffnen Sie Links innerhalb des Applets
Sie können die Methode getAppletContext()
, um ein AppletContext
Objekt zu erhalten, mit dem Sie den Browser zum Öffnen eines Links AppletContext
können. Dazu verwenden Sie die Methode showDocument()
. Sein zweiter Parameter weist den Browser an, ein neues Fenster _blank
oder das Fenster, in dem das Applet _self
.
public class MyLinkApplet extends JApplet{
@Override
public void init(){
JButton button = new JButton("ClickMe!");
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
AppletContext a = getAppletContext();
try {
URL url = new URL("http://stackoverflow.com/");
a.showDocument(url,"_blank");
} catch (Exception e) { /* omitted for brevity */ }
}
});
add(button);
}
}
Laden von Bildern, Audio und anderen Ressourcen
Java-Applets können verschiedene Ressourcen laden. Da sie jedoch im Webbrowser des Clients ausgeführt werden, müssen Sie sicherstellen, dass auf diese Ressourcen zugegriffen werden kann. Applets können nicht als lokales Dateisystem auf Clientressourcen zugreifen.
Wenn Sie Ressourcen von derselben URL laden möchten, in der das Applet gespeichert ist, können Sie mit der Methode getCodeBase()
die Basis-URL abrufen. Zum Laden von Ressourcen bieten Applets die Methoden getImage()
und getAudioClip()
zum Laden von Bildern oder Audiodateien.
Laden und zeigen Sie ein Bild
public class MyImgApplet extends JApplet{
private Image img;
@Override
public void init(){
try {
img = getImage(new URL("http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png"));
} catch (MalformedURLException e) { /* omitted for brevity */ }
}
@Override
public void paint(Graphics g) {
g.drawImage(img, 0, 0, this);
}
}
Laden und spielen Sie eine Audiodatei
public class MyAudioApplet extends JApplet{
private AudioClip audioClip;
@Override
public void init(){
try {
audioClip = getAudioClip(new URL("URL/TO/AN/AUDIO/FILE.WAV"));
} catch (MalformedURLException e) { /* omitted for brevity */ }
}
@Override
public void start() {
audioClip.play();
}
@Override
public void stop(){
audioClip.stop();
}
}
Laden Sie eine Textdatei und zeigen Sie sie an
public class MyTextApplet extends JApplet{
@Override
public void init(){
JTextArea textArea = new JTextArea();
JScrollPane sp = new JScrollPane(textArea);
add(sp);
// load text
try {
URL url = new URL("http://www.textfiles.com/fun/quotes.txt");
InputStream in = url.openStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = bf.readLine()) != null) {
textArea.append(line + "\n");
}
} catch(Exception e) { /* omitted for brevity */ }
}
}