2016-07-04 91 views
-1

我在包JFrame中有一個父JFrame和兩個'子'JFrames。想象一下,我打開父JFrame,然後它是小孩JFrames - 目前所有3種形式都是開放的。現在我關閉父JFrame。如何關閉父項時自動關閉子jFrames?

我應該怎樣在關閉父JFrame後自動關閉所有子框架?
這裏是我的代碼:

類家長:
公共類父擴展的JFrame {

public Parent() { 

    JButton child1 = new JButton("child1"); 
    child1.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      new Child1().setVisible(true);; 
     } 
    }); 

    JButton child2 = new JButton("child2"); 
    child2.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      new Child2().setVisible(true); 
     } 
    }); 
    JButton closeAllJframe = new JButton("closeAllJframe"); 
    closeAllJframe.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      dispose(); 
     } 
    }); 

    this.setBounds(500, 200, 400, 200); 
    this.addWindowListener(new WindowAdapter() { 
     @Override 
     public void windowClosing(WindowEvent e) { 
      dispose(); 
     } 
    }); 
    JPanel jPanel = new JPanel(); 
    jPanel.add(child1); 
    jPanel.add(child2); 
    jPanel.add(closeAllJframe); 
    this.add(jPanel); 
} 

@Override 
public void dispose() { 
    super.dispose(); 
} 

public static void main(String[] args) { 
    new Parent().setVisible(true); 
}} 

類Child1:

公共類Child1擴展的JFrame {

public Child1() { 
    this.setBounds(200, 300, 300, 200); 
    this.setTitle("child 1"); 
}} 

類Child2:

公共類CHILD2擴展的JFrame {

public Child2() { 
    this.setBounds(200, 300, 300, 200); 
    this.setTitle("child 1"); 
}} 
+2

形式?你的意思是jframes? –

+1

如果它是jframes,則在窗口關閉事件上添加窗口偵聽器並在子jframes上調用處理。 –

+2

1)提示:添加@FastSnail(或者,'@'是重要的)* *通知*新的評論的人。 2)爲了更快地獲得更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 3)請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/q/9554636/418556)提示:'子框架'應該是對話框。 –

回答