如何在2个或更多ACTIVATED JFrame之间传递数据?
在C#中这是通过使用委托和事件完成的,这里是链接:Passing Data between Windows Forms。如何在2个或更多ACTIVATED JFrame之间传递数据?
我的要求是这样的。用户必须通过将数据库中的全部项目加载到新表单的JTable
来搜索项目代码,单击主窗体(或任何其他窗体)中的按钮即可显示此新窗体。之后,用户双击表格中的特定项目代码,并将该项目代码传递给主窗体(或任何其他窗体)的文本字段并关闭当前表单。
这里是从C#https://www.youtube.com/watch?v=_lPkc1YV2vQ&feature=youtu.be
第二窗口不应该是一个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();
如果你想坚持做你的事件/委托的方式,你可以考虑使用BeansBinding。
它需要您的模型在数据更改时触发事件,并将Swing GUI元素寄存器添加为这些模型上的propertyListener。
对于原始海报Macmarc25,这是支持MVC(模型 - 视图 - 控制)设计的绝佳答案。 1+ – 2014-09-02 20:03:43
是的,但对你想做的事情有点矫枉过正... JDialog是一种更好/更简单的答案。 – JSlain 2014-09-02 22:33:52
请参阅[使用多个JFrames,好/坏实践?](http://*.com/q/9554636/418556) – 2014-09-02 17:11:33
@AndrewThompson:对于OP的功劳,这似乎是一个体面的地方一个模态对话框。 – 2014-09-02 17:13:56
@HovercraftFullOfEels ..你几乎写道,像模态对话框没有在链接的问答中提到。 – 2014-09-02 17:16:07