2014-10-20 101 views
0

我有一个项目,我正在一个项目,需要2个JFrames在一个单一的程序。问题是,当我关闭一个另一个也将关闭,所以我做了一个测试课,看看问题是什么,我仍然无法弄清楚,所以这里是我的测试用例:我的JFrame关闭,当我关闭另一个框架

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class frameTest { 

    public static void main(String[] args) { 

     JFrame f1 = new JFrame(); 
     JButton open = new JButton("open"); 
     open.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       JFrame f2 = new JFrame(); 
       f2.setVisible(true); 
       f2.setDefaultCloseOperation(f2.EXIT_ON_CLOSE); 
       f2.setSize(200, 200); 
      } 
     }); 

     f1.setDefaultCloseOperation(f1.EXIT_ON_CLOSE); 
     f1.setVisible(true); 
     f1.setSize(500, 500); 
     f1.add(open); 
    } 
} 

当我点击打开按钮弹出(f2)将出现,但当我关闭它的另一个窗口也将关闭,为什么会发生这种情况?

+1

注意:[使用多个JFrames,好/坏实践?](http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice) – Reimeus 2014-10-20 18:45:22

回答

3
f2.setDefaultCloseOperation(f2.EXIT_ON_CLOSE); 

EXIT_ON_CLOSE表示关闭Java VM。

如果你只是想关闭当前帧,然后使用:

f2.setDefaultCloseOperation(f2.DISPOSE_ON_CLOSE); 
+0

谢谢!这真的有助于 – ghost1349 2014-10-20 18:48:41

+0

@ ghost1349,那么也许你应该开始“接受”答案,所以大家都知道这个问题已经得到解答。 – camickr 2014-10-21 00:59:35

3

看看在这条线:

f2.setDefaultCloseOperation(f2.EXIT_ON_CLOSE); 

这意味着,当你关闭框架应用程序被终止。所以,不是第二帧关闭。整个应用程序终止。

如果您不希望此行为删除此行。