2013-10-02 56 views
0

我決定在我的JFrame上放置「關閉」按鈕。如果我自己測試這個JFrame,它可以正常工作,但是當我通過另一個類打開它後嘗試關閉它時,它將不會關閉。關閉單個JFrame不工作錯誤

下面是代碼:

JButton btnClose = new JButton("Close"); 
btnClose.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     frame.dispose(); 
    } 
}); 
btnClose.setBounds(282, 666, 96, 50); 
contentPane.add(btnClose); 

我一直在使用frame.dispose()frame.close()super.dispose()但工作原理是system.exit(0);唯一一個嘗試,但隨後即退出整個程序。

問題:

  • 如果我本身測試JFrame,該框架關閉的罰款。
  • 如果我打開該程序並導航到該特定的JFrame,關閉按鈕不起作用。

請指教。

+0

「當我試圖通過另一個類,打開後關閉它」 - 郵政編碼爲這部分 – Rajesh

+0

你有沒有檢查如果執行到達的代碼點? –

+1

爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 *「..具體的'JFrame' ..」*請參閱[使用多個JFrames,良好/壞習慣?](http://stackoverflow.com/a/9554657/418556) –

回答

0

在框架上使用setVisible(false);。然後調用處置。

+0

我試過了,它不像上面說的那樣工作 – VaMoose

1

您是否在ActionListener中添加了顯示語句以確保代碼正在執行?

如果代碼正在執行,那麼問題可能是該框架變量具有無效的引用。

您不需要保留對幀的引用。相反,使用類似:

Window window = SwingUtilities.windowForComponent(e.getSource()); 
window.dispose();