Szukaj…


Wprowadzenie

Aplety są częścią Javy od czasu jej oficjalnego wydania i od wielu lat są używane do nauczania języka Java oraz programowania.

W ostatnich latach nastąpił czynny nacisk na odejście od apletów i innych wtyczek do przeglądarek, przy czym niektóre przeglądarki blokują je lub aktywnie nie obsługują.

W 2016 r. Oracle ogłosiło plany wycofania wtyczki, przechodząc do sieci bez wtyczek

Dostępne są nowsze i lepsze interfejsy API

Uwagi

Aplet to aplikacja Java, która zwykle działa w przeglądarce internetowej. Podstawową ideą jest interakcja z użytkownikiem bez konieczności interakcji z serwerem i przesyłania informacji. Ta koncepcja była bardzo udana około 2000 roku, kiedy komunikacja internetowa była powolna i droga.

Aplet oferuje pięć metod kontrolowania ich cyklu życia.

nazwa metody opis
init() jest wywoływany raz, gdy aplet jest ładowany
destroy() jest wywoływany raz, gdy aplet zostanie usunięty z pamięci
start() jest wywoływany za każdym razem, gdy aplet staje się widoczny
stop() jest wywoływany za każdym razem, gdy aplet nakłada się na inne okna
paint() jest wywoływany w razie potrzeby lub uruchamiany ręcznie przez wywołanie repaint()

Minimalny aplet

Bardzo prosty aplet rysuje prostokąt i drukuje coś na ekranie.

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

Główna klasa apletu pochodzi z javax.swing.JApplet .

Java SE 1.2

Przed Javą 1.2 i wprowadzeniem swingowych apletów API rozszerzono z java.applet.Applet .

Aplety nie wymagają głównej metody. Punkt wejścia jest kontrolowany przez cykl życia. Aby z nich skorzystać, muszą być osadzone w dokumencie HTML. Jest to także punkt, w którym określa się ich rozmiar.

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

Tworzenie GUI

Apletów można łatwo użyć do utworzenia GUI. Działają jak Container i mają metodę add() , która pobiera dowolny komponent awt lub swing .

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

Otwórz linki z poziomu apletu

Możesz użyć metody getAppletContext() aby uzyskać obiekt AppletContext który pozwala poprosić przeglądarkę o otwarcie łącza. W tym celu używasz metody showDocument() . Drugi parametr mówi przeglądarce, aby używała nowego okna _blank lub tego, który pokazuje aplet _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);
    }
}

Ładowanie zdjęć, audio i innych zasobów

Aplety Java mogą ładować różne zasoby. Ale ponieważ działają one w przeglądarce internetowej klienta, musisz upewnić się, że te zasoby są dostępne. Aplety nie mają dostępu do zasobów klienta jako lokalny system plików.

Jeśli chcesz załadować zasoby z tego samego adresu URL, w którym przechowywany jest aplet, możesz użyć metody getCodeBase() aby pobrać podstawowy adres URL. Aby załadować zasoby, aplety oferują metody getImage() i getAudioClip() do ładowania obrazów lub plików audio.

Załaduj i pokaż obraz

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

Załaduj i odtwórz plik audio

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

Załaduj i wyświetl plik tekstowy

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow