2011-12-12 147 views
1

我有主應用程序框架。如果用戶點擊按鈕,他會得到一個有一些圖表的新框架。現在,如果我想關閉該圖表,圖表和主應用程序都會關閉。我怎樣才能區分這兩個關閉。當然,我不希望我的應用程序在關閉放置圖表的框架後關閉。 這是圖框的代碼。如何關閉JFrame?

chartBttn.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       final ShowChart sc = new ShowChart("Reserve Selection", getUtilExperiments()); 
       sc.pack(); 
       RefineryUtilities.centerFrameOnScreen(sc); 
       sc.setVisible(true); 
       sc.setDefaultCloseOperation(ShowChart.DISPOSE_ON_CLOSE); 

      } 
     }); 
+0

要「關閉圖表」,您是否使用窗口的關閉按鈕或窗口內的自定義關閉按鈕? –

回答

3

如果我理解正確的話,你在你的新的JFrame建立了一種關閉按鈕或X窗口按鈕,:

setVisible(false); 
dispose(); 

否則請張貼在創建新的JFrame等

代碼
5

您可以使用dispose()方法。或者你可以在JFrame上調用setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

+0

@ilija:改爲用你的代碼更新你的問題。 – Jonas

+0

用代碼更新。 – ilija

+0

@ilija:是的,你的代碼工作正常。 – Jonas

3

當然,我不希望我的應用程序在關閉放置圖表的框架後關閉。

1)不要創建太多的JFrames上的蒼蠅,創建JFrame只有一次,再利用,對於下次使用(S),然後

  • 調用僅適用於具有setDefaultCloseOperation(JFrame.NOTHING_ON_CLOSE)
  • 知名度 setVisible(false/true)

還是很簡單的解決方法

  • setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)

2)或JDialogsetDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE)

3)注意:但在這種情況下是不可能關閉當前JVM實例,你必須添加JButton or JMenu/JMenuItem其加速System.exit(1)

+0

+1好的建議 – Jonas

0

只需使用super.dispose();關閉前一個jframe