新问题。根据我上一个问题中的步骤调整我的程序后: How to access already running instance of a class without creating an actual object
我提出了一个新奇怪的问题。我通过构造函数将I的引用传递给G,然后使用该引用从G操纵我。我已将该函数映射到“后退按钮”。问题:如果我按回按钮然后调整我的I帧然后单击完成按钮,它会隐藏我界面并将G帧设置为可见。我有另一个按钮,它只是创建了一个新的清晰的I实例,按下它后,我得到了大量的I实例打开(与我按下按钮的次数成正比)。经过大量的调试后,我仍然感到困惑......也许这是我创建太多线程的问题...我不知道..这里有一些代码片段:
G构造函数:
public GUI(Intro i) {
this.intro = i;
make();
layout();
layout2();
layout3();
invalid();
setEnable();
}
后退按钮代码:
private class BackToSetUp implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
intro.frame.setVisible(true);
frame.dispose();
}
}
重置按钮代码:
private class ResetProgram implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
frame.dispose();
frame2.dispose();
frame3.dispose();
frame4.dispose();
Runnable runnable = new Runnable() {
public void run() {
intro = new Intro();
intro.setVisible(true);
}
};
EventQueue.invokeLater(runnable);
}
}
完成按钮代码:
class Done implements ActionListener {
GUI g = new GUI();
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < 9; i++) {
System.out.println(array[i]);
}
g.setArray(array);
System.out.println(array);
setText();
frame.setVisible(false);
g.setVisible(true);
g.setVisible2(false);
//if (g.clear.isSelected()) {
// frame.setVisible(true);
//}
}
答案 0 :(得分:0)
将前一个G实例设置为null可以解决问题,因为垃圾收集器会处理它,因此每次只运行一个类的一个实例。解决