在JavaSwing上从子帧管理父帧

在JavaSwing上从子帧管理父帧,java,swing,events,jframe,jbutton,Java,Swing,Events,Jframe,Jbutton,我有一个jframe(父对象),它创建了一个输入帧(子对象),从中我可以得到一些参数 在“子”框中,我有“确定”和“取消”按钮 按下“确定”按钮时,需要使用新数据更新父帧 最好的方法是什么???在创建(或显示)子帧时传入对父帧的引用。这将需要重载的构造函数或显示方法 一旦子对象拥有引用,它当然可以调用父对象公开为公共的任何方法,比如UpdateDate()您可以让JFrame实现ActionListener,并使用addActionListener将其添加到按钮中。从Java 1.3开始 pub

我有一个jframe(父对象),它创建了一个输入帧(子对象),从中我可以得到一些参数

在“子”框中,我有“确定”和“取消”按钮

按下“确定”按钮时,需要使用新数据更新父帧


最好的方法是什么???

在创建(或显示)子帧时传入对父帧的引用。这将需要重载的构造函数或显示方法


一旦子对象拥有引用,它当然可以调用父对象公开为公共的任何方法,比如UpdateDate()

您可以让JFrame实现ActionListener,并使用addActionListener将其添加到按钮中。

从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);

    .....

  }

}
公共类MyPanel扩展了JPanel
{
公共事务委员会(){
....
JButton cancelButton=新JButton(“取消”);
cancelButton.addActionListener(
新建ActionListener(){
已执行的公共无效操作(操作事件e){
//我喜欢在我的所有框架/对话框上放置一个“launch()”方法。使用正确的模态,它可以返回结果

对话框返回值的示例:

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;
    }
}

这是我正在使用的解决方案,没有最干净的方法?非常感谢。解决了我的问题:)这更干净。+1