在javaswing上从子框架管理父框架

我有一个jframe(父),它创建一个输入框架(子),我得到一些参数。

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

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

最好的方法是什么?

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

一旦孩子有了引用,它当然可以调用父公开的任何方法,如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将其添加到按钮。

我想在我的所有框架/对话框上放置一个’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; } }