2013-04-08 68 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