2009-02-21 63 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; 
    } 
}