2

我有一个 jframe(父),它创建一个输入框架(子),我在其中获取一些参数。

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

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

最好的方法是什么?

4

4 回答 4

11

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

    .....

  }

}
于 2009-03-07T04:00:23.647 回答
4

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

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

于 2009-02-21T17:09:01.370 回答
0

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

于 2009-02-22T20:19:52.947 回答
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;
    }
}
于 2010-11-26T06:08:49.557 回答