JApplet Restart добавляет дубликаты компонентов

Я тестировал свои JApplets, и они работали нормально. Я обнаружил меню апплета, которое всегда загружается, и мне захотелось протестировать его пункты меню. Когда я попробовал пункт меню «Перезапустить», я понял, что такие компоненты, как JButton, JLabel, JTextBox, дублируют себя, а текст, установленный ActionEvent, не сбрасывается. Вот пример JApplet:

import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.*;
public class ExampleJApplet extends JApplet implements ActionListener
{
    private JLabel label= new JLabel();
    public void init()
    {
        setLayout(new FlowLayout());
        JButton button = new JButton("Press");
        add(button);
        add(label);
        button.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e)
    {
        label.setText("The button was pressed");
    }
}

Это работает, но когда я захожу в Applet - Restart, JButton дублирует себя, а JLabel не сбрасывается. Я думал, что init() вызывается только один раз, но с Restart она вызывается более одного раза. Чтобы мои JApplets не делали этого при перезапуске, должен ли я объявлять и добавлять компоненты (на которые не ссылаются другие методы, такие как actionPerformed()) в конструкторе или я должен объявлять все компоненты в области класса, чтобы они не рассматривались как новые Объекты? Следует ли создавать экземпляры в init(), чтобы обновленный текст заменялся инициализированным текстом?

Из любопытства: зачем изучаем japplet? Вы проводите занятия по истории информатики?

GhostCat 21.03.2019 05:03
"Я обнаружил меню апплета, которое всегда загружается..." Так.. ты про просмотрщик апплетов, да? Зачем так заботиться о том, как работает (или не работает) инструмент разработчика? Кажется, что Oracle не очень заботятся об апплетах (учитывая, что они устарели), и я думаю, еще меньше об артефактах, связанных с инструментами разработчика для апплетов. Чтобы расширить то, что упомянул @GhostCat. См. Поддержка плагинов Java устарела и Переход к сети без плагинов.
Andrew Thompson 21.03.2019 14:40

Я взял Java несколько лет назад. Мы узнали о JApplets. Возможно, в учебниках по Java больше нет главы о JApplets, а если и есть, то преподаватели просто пропускают ее. Я не обесценил их от Java. На веб-сайте Oracle все еще есть класс JApplet. Браузеры перестали поддерживать JApplet, но JApplet все еще находится в JDK, и они по-прежнему работают. Компании, вероятно, перестали работать с JApplets, и, возможно, поэтому учить этому бесполезно. Так что на самом деле не имеет значения, как я буду защищать их от перезапуска, поскольку теперь они являются хобби, а не тем, что захотят компании.

Mike Mendizabal 22.03.2019 05:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
38
0

Другие вопросы по теме