在java秋千上从子框架管理父框架

时间:2009-02-21 17:04:15

标签: java swing events jframe jbutton

我有一个jframe(父),它创建一个输入框(子),我得到一些参数。

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

当按下“ok”按钮时,需要使用新数据更新父框架。

最好的方法是什么?

4 个答案:

答案 0 :(得分: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);

    .....

  }

}

答案 1 :(得分:4)

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

一旦孩子有了引用,它当然可以调用父公开的任何方法,如UpdateDate()

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我喜欢在所有框架/对话框上放置'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;
    }
}