从子帧上的Java Swing管理父框架
题
我有一个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;
}
}
不隶属于 StackOverflow