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




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