2013-04-08 73 views
0

新问题。根据我以前的问题中的步骤调整我的程序后: How to access already running instance of a class without creating an actual object不需要的多个实例java

我已经出现了新奇怪的问题。我通过构造函数将I的引用传递给G,然后使用该引用从G处理I。我已将该函数映射为“后退按钮”。问题:如果我打回按钮,然后调整我的I帧,然后单击隐藏I接口并将G帧设置为可见的完成按钮。我有另一个按钮,只是简单地创建了I的新清除实例,一旦按下,我就会得到大量I实例打开(与按下按钮的次数成正比)。大量的调试后,我仍然不解......也许与我创建的线程太多的问题...我不知道..这里的一些代码片段:

摹构造:

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

这是新学期的开始吗?我以为那是几个月前的事。 – 2013-04-08 03:47:20

+0

个人项目。学校的东西太简单了。 – pirate694 2013-04-08 12:54:32

+0

您可以通过指向类的实例来访问类的实例。 – 2013-04-09 01:33:34

回答

0

将之前的G实例设置为null解决了问题,因为垃圾回收器会处理它,因此一次只能运行每个类的一个实例。求助

+0

为什么你首先创建了多个实例? – 2013-04-09 11:08:34

+0

这是一个与我的程序的错误,它会保持旧的实例活动,所以在与我的程序中实现的功能多次交互后,我想要弹出15个实例。我不知道是什么导致了它,直到我添加了如此的打印语句来查看发生了什么,而无需使用调试器。我发现当按下按钮时,先前的实例没有被销毁,并保存在某种堆栈中,所以当我按下另一个按钮时(例如创建全新实例),所有这些实例都会显示出来。 – pirate694 2013-04-09 11:13:13