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 .

Java SE 1.2

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);
    }
}

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 */ }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow