Zoeken…


Invoering

Applets maken sinds de officiële release deel uit van Java en worden al een aantal jaren gebruikt om Java en programmeren te onderwijzen.

De afgelopen jaren is er een actieve push geweest om weg te stappen van applets en andere browserplug-ins, waarbij sommige browsers deze blokkeerden of actief niet ondersteunden.

In 2016 kondigde Oracle hun plannen aan om de plug-in af te schaffen, verhuizen naar een web zonder plug-ins

Nieuwere en betere API's zijn nu beschikbaar

Opmerkingen

Een applet is een Java-toepassing die normaal gesproken in een webbrowser wordt uitgevoerd. Het basisidee is om met de gebruiker te communiceren zonder de noodzaak om met de server te communiceren en informatie over te dragen. Dit concept was zeer succesvol rond het jaar 2000, toen internetcommunicatie traag en duur was.

Een applet biedt vijf methoden om hun levenscyclus te regelen.

methode naam Beschrijving
init() wordt één keer aangeroepen wanneer de applet wordt geladen
destroy() wordt één keer aangeroepen wanneer de applet uit het geheugen wordt verwijderd
start() wordt aangeroepen wanneer de applet zichtbaar wordt
stop() wordt aangeroepen wanneer de applet overlapt met andere vensters
paint() wordt opgeroepen wanneer nodig of handmatig geactiveerd door repaint() aan te roepen

Minimale applet

Een heel eenvoudige applet tekent een rechthoek en drukt iets op het scherm af.

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

De hoofdklasse van een applet strekt zich uit van javax.swing.JApplet .

Java SE 1.2

Vóór Java 1.2 en de introductie van de swing API-applets was uitgebreid van java.applet.Applet .

Applets vereisen geen hoofdmethode. Het toegangspunt wordt bestuurd door de levenscyclus. Om ze te gebruiken, moeten ze worden ingesloten in een HTML-document. Dit is ook het punt waar hun grootte is gedefinieerd.

<html>
  <head></head>
  <body>
     <applet code="MyApplet.class" width="400" height="200"></applet>
  </body>
</html>

Een GUI maken

Applets kunnen eenvoudig worden gebruikt om een GUI te maken. Ze fungeren als een Container en hebben een add() -methode die elke awt of swing component awt .

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

U kunt de methode getAppletContext() gebruiken om een AppletContext object te verkrijgen waarmee u de browser kunt vragen om een link te openen. Hiervoor gebruikt u de methode showDocument() . De tweede parameter vertelt de browser om een nieuw venster _blank of degene die de applet _self toont.

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

Afbeeldingen, audio en andere bronnen laden

Java-applets kunnen verschillende bronnen laden. Maar aangezien ze in de webbrowser van de client worden uitgevoerd, moet u ervoor zorgen dat deze bronnen toegankelijk zijn. Applets hebben geen toegang tot clientbronnen als het lokale bestandssysteem.

Als u bronnen van dezelfde URL wilt laden als de applet is opgeslagen, kunt u de methode getCodeBase() gebruiken om de basis-URL op te halen. Om bronnen te laden, bieden applets de methoden getImage() en getAudioClip() om afbeeldingen of audiobestanden te laden.

Laad en toon een afbeelding

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

Laad en speel een audiobestand

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

Laad en toon een tekstbestand

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow