我一直在测试我的JApplets,并且它们运行正常。我发现了始终加载的Applet菜单,我想测试一下其菜单项。当我尝试“重新启动”菜单项时,我意识到诸如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-重新启动时,JButton会自我复制,并且JLabel不会重置。我以为init()仅被调用了一次,但是在Restart中,它被调用了多次。因此,我的JApplets不在Restart上执行此操作,应该在构造函数中声明并添加组件(未由其他方法(例如actionPerformed()引用)),还是应该在类范围内声明所有组件,因此不会将它们视为新组件对象?应该在init()中实例化,以便用初始化的文本替换更新的文本吗?