我有一个 jframe(父),它创建一个输入框架(子),我在其中获取一些参数。
在“子”框架中,我有“确定”和“取消”按钮。
当按下“确定”按钮时,需要用新数据更新父框架。
最好的方法是什么?
从 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);
.....
}
}
创建(或显示)子框架时传入对父框架的引用。这将需要一个重载的构造函数或显示方法。
一旦孩子有了引用,它当然可以调用父母公开的任何方法,比如 UpdateDate()
您可以让 JFrame 实现 ActionListener 并使用 addActionListener 将其添加到按钮。
我喜欢在我所有的框架/对话框上放置一个“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;
}
}