Sök…


Introduktion

Applets har varit en del av Java sedan det officiellt släpptes och har använts för att lära Java och programmering under ett antal år.

Under de senaste åren har en aktiv drivkraft för att flytta bort från Applets och andra webbläsar-plugins, med vissa webbläsare blockerat dem eller aktivt inte stött dem.

2016 meddelade Oracle sina planer på att avskriva plugin-programmet och flytta till ett plugin-fritt webb

Nyare och bättre API: er finns nu tillgängliga

Anmärkningar

En applet är en Java-applikation som normalt körs i en webbläsare. Den grundläggande idén är att interagera med användaren utan att behöva interagera med servern och överföra information. Detta koncept var mycket framgångsrikt år 2000 då internetkommunikationen var långsam och dyr.

En applet erbjuder fem metoder för att kontrollera deras livscykel.

metodnamn beskrivning
init() kallas en gång när appleten laddas
destroy() kallas en gång när appletten tas bort från minnet
start() kallas när appleten blir synlig
stop() kallas när appleten överlappas av andra fönster
paint() kallas vid behov eller utlöses manuellt genom att ringa repaint()

Minimal applet

En mycket enkel applet ritar en rektangel och skriver ut en sträng något på skärmen.

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

Huvudklassen för en applet sträcker sig från javax.swing.JApplet .

Java SE 1.2

Innan Java 1.2 och introduktionen av swing-API-appleterna hade utvidgats från java.applet.Applet .

Applets kräver ingen huvudmetod. Ingångspunkten styrs av livscykeln. För att kunna använda dem måste de vara inbäddade i ett HTML-dokument. Detta är också punkten där deras storlek definieras.

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

Skapa ett GUI

Applets kan lätt användas för att skapa ett GUI. De fungerar som en Container och har en add() metod som tar alla awt eller swing komponent.

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

Öppna länkar från appletten

Du kan använda metoden getAppletContext() att få ett AppletContext objekt som låter dig begära webbläsaren att öppna en länk. För detta använder du metoden showDocument() . Dess andra parameter berättar för webbläsaren att använda ett nytt fönster _blank eller det som visar 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);
    }
}

Laddar bilder, ljud och andra resurser

Java-appletar kan ladda olika resurser. Men eftersom de körs i klientens webbläsare måste du se till att dessa resurser är tillgängliga. Applets har inte tillgång till klientresurser som det lokala filsystemet.

Om du vill ladda resurser från samma URL som appleten är lagrad kan du använda metoden getCodeBase() att hämta bas-URL. För att ladda resurser erbjuder getImage() metoderna getImage() och getAudioClip() att ladda bilder eller ljudfiler.

Ladda och visa en 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);
        } 
}

Ladda och spela en ljudfil

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

Ladda och visa en textfil

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow