Поиск…


Вступление

Апплеты были частью Java с момента его официального выпуска и были использованы для обучения Java и программирования в течение ряда лет.

В последние годы наблюдается активный толчок к удалению от апплетов и других плагинов браузеров, причем некоторые браузеры блокируют их или активно не поддерживают их.

В 2016 году Oracle объявила о своих планах отказаться от плагина, перейдя в плагиновую сеть

Теперь доступны новые и лучшие API-интерфейсы

замечания

Апплет - это приложение Java, которое обычно запускается внутри веб-браузера. Основная идея заключается в том, чтобы взаимодействовать с пользователем без необходимости взаимодействия с сервером и передачи информации. Эта концепция была очень успешной в 2000 году, когда интернет-общение было медленным и дорогостоящим.

Апплет предлагает пять методов контроля жизненного цикла.

имя метода описание
init() вызывается один раз при загрузке апплета
destroy() вызывается один раз, когда апплет удаляется из памяти
start() вызывается всякий раз, когда апплет становится видимым
stop() вызывается всякий раз, когда апплет накладывается другими окнами
paint() вызывается при необходимости или вручную запускается вызовом repaint()

Минимальный апплет

Очень простой апплет рисует прямоугольник и печатает строку на экране.

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

Основной класс апплета простирается от javax.swing.JApplet .

Java SE 1.2

До появления Java 1.2 и внедрения апплетов swing API были расширены из java.applet.Applet .

Апплеты не требуют основного метода. Точка входа контролируется жизненным циклом. Чтобы использовать их, они должны быть встроены в HTML-документ. Это также точка, в которой определяется их размер.

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

Создание графического интерфейса

Апплеры могут быть легко использованы для создания графического интерфейса. Они действуют как Container и имеют метод add() который принимает любой компонент awt или 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);
    }
}

Открытые ссылки из апплета

Вы можете использовать метод getAppletContext() чтобы получить объект AppletContext который позволяет запросить браузер, чтобы открыть ссылку. Для этого вы используете метод showDocument() . Второй параметр указывает браузеру использовать новое окно _blank или тот, который показывает апплет _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);
    }
}

Загрузка изображений, аудио и других ресурсов

Java-апплеты могут загружать разные ресурсы. Но поскольку они работают в веб-браузере клиента, вам необходимо убедиться, что эти ресурсы доступны. Апплеты не могут обращаться к клиентским ресурсам как к локальной файловой системе.

Если вы хотите загружать ресурсы с одного и того же URL-адреса, Applet хранится, вы можете использовать метод getCodeBase() для извлечения базового URL-адреса. Для загрузки ресурсов апплеты предлагают методы getImage() и getAudioClip() для загрузки изображений или аудиофайлов.

Загрузите и покажите изображение

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

Загрузка и воспроизведение аудиофайла

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

Загрузка и отображение текстового файла

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow