Javaのスイングで、子フレームから親フレームを管理します
質問
私は、いくつかのパラメータを取得し、入力フレーム(子)を作成した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;
}
}
所属していません StackOverflow