2014-10-20 104 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); 

這意味着,當你關閉框架應用程序被終止。所以,不是第二幀關閉。整個應用程序終止。

如果您不希望此行爲刪除此行。