質問

私は、いくつかのパラメータを取得し、入力フレーム(子)を作成したJFrame(親)を持っています。

私は、「キャンセル」、「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