2009-02-21 110 views
2

我有一個jframe(父)它創建一個輸入框架(子),我得到一些參數。從java swing上的子框架管理父框架

在「孩子」框架中,我有「確定」和「取消」按鈕。

當按下「ok」按鈕時,父框架需要用新數據更新。

什麼是最好的辦法呢?

回答

3

創建(或顯示)子框架時,傳入對父框架的引用。這將需要重載的構造函數或顯示方法。

一旦孩子參考,這當然可以調用父公開爲public,像UpdateDate()

+0

這個我我使用的解決方案,有沒有乾淨的方式? – Giancarlo 2009-02-21 17:16:00

+0

非常感謝,解決了我的問題:) – rachana 2014-06-25 18:52:43

0

你可以有JFrame中實現ActionListener,並把它添加到使用addActionListener方法,按鈕的任何方法。

10

從Java 1.3

public class MyPanel extends JPanel 
{ 

    public MyPanel() { 

    .... 

    JButton cancelButton = new JButton("Cancel"); 
    cancelButton.addActionListener(
     new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      // <<<< HERE'S THE INTERESTING BIT >>>> 
      javax.swing.SwingUtilities.getWindowAncestor(MyPanel.this).dispose(); 
     } 
     } 
    ); 
    add(cancelButton); 

    ..... 

    } 

} 
0

的我喜歡把一個'推出()方法對我所有的幀/對話框。有了正確的模式,它可以返回結果。

從對話框返回值的例子:

private static class MyDialog extends JDialog { 
    String result; 
    private JButton btnOk = new JButton("OK"); 

    public MyDialog() { 
     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     setModalityType(ModalityType.APPLICATION_MODAL); 

     add(btnOk); 
     btnOk.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       result = "Ok"; 
       setVisible(false); 
      } 
     }); 
    } 

    public String launch() { 
     result = "Cancel"; 
     pack(); 
     setVisible(true); 
     return result; 
    } 
}