如何在2个或更多ACTIVATED JFrame之间传递数据?

时间:2014-09-02 17:10:10

标签: java forms swing jframe

在C#中,这是通过使用委托和事件来完成的,这里是链接:Passing Data between Windows Forms

我的要求是这样的。用户必须通过将数据库中的所有项目加载到新表单JTable来搜索项目代码,通过单击主表单(或任何其他表单)中的按钮来显示此新表单。在此之后,用户双击表格中的特定项目代码,该项目代码将传递到主表单(或任何其他表单的)文本字段并关闭当前表单。

这是c#https://www.youtube.com/watch?v=_lPkc1YV2vQ&feature=youtu.be

的输出

2 个答案:

答案 0 :(得分:1)

第二个窗口不应该是JFrame,而应该是JDialog,可能是模态的。如果它是模态的,则调用窗口将知道第二个对话框窗口何时关闭,因为程序流从显示对话框时立即停止在调用代码处(想想JOptionPanes如何工作)并且在第二个对话框窗口关闭之前不会恢复。您可以从与对话框窗口关联的对象中提取相关数据,并且可以通过调用适当的getter方法等简单方法获取此信息。

如,

JDialog someDialog = new JDialog(myJFrame, "My Dialog", ModalityType.APPLICATION_MODAL);
someDialog.add(myContentPaneWithMyGui);
someDialog.pack();
someDialog.setVisible(true);

// here code flow stops until the dialog is no longer visible.

// now call my getter to extract data
SomeType someData = myContentPaneWithMyGui.getSomeData();

答案 1 :(得分:1)

如果您想坚持使用事件/委托方式,可以考虑使用BeansBinding

它要求您的模型在数据更改时触发事件,并在这些模型上将Swing GUI元素寄存器添加为propertyListeners。