2011-12-12 90 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