我有一个JFrame(父),其创建一个输入帧(子)其中,I得到一些参数。

在“子”帧我有“OK”和“取消”按钮。

当按下“OK”按钮,则父帧需要用新的数据来更新。

什么是做到这一点?最好的办法

有帮助吗?

解决方案

传递到当创建(或显示)的子帧在父帧中的参考。这将需要一个重载的构造或显示方法。

一旦孩子具有参考,它当然可以调用母体暴露公共的任何方法,如UpdateDate()

其他提示

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

    .....

  }

}

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

我喜欢把一个“启动()”方法对所有我的帧/对话框。有了合适的模态可以返回一个结果。

从对话框返回值的示例:

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;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top