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

问题描述:

在C#中这是通过使用委托和事件完成的,这里是链接:Passing Data between Windows Forms如何在2个或更多ACTIVATED JFrame之间传递数据?

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

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

+0

请参阅[使用多个JFrames,好/坏实践?](http://*.com/q/9554636/418556) – 2014-09-02 17:11:33

+0

@AndrewThompson:对于OP的功劳,这似乎是一个体面的地方一个模态对话框。 – 2014-09-02 17:13:56

+0

@HovercraftFullOfEels ..你几乎写道,像模态对话框没有在链接的问答中提到。 – 2014-09-02 17:16:07

第二窗口不应该是一个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(); 
+0

我已经在C#中这样做了这个https://www.youtube.com /watch?v=_lPkc1YV2vQ&feature=youtu.be。你可以告诉我用Java来做这件事:) – Macmarc25 2014-09-02 17:59:38

+0

@ Macmarc25:我以为我刚刚做过。 – 2014-09-02 20:02:45

+0

什么是myJFrame和myContentPaneWithMyGui? – Macmarc25 2014-09-03 14:24:36

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

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

+0

对于原始海报Macmarc25,这是支持MVC(模型 - 视图 - 控制)设计的绝佳答案。 1+ – 2014-09-02 20:03:43

+0

是的,但对你想做的事情有点矫枉过正... JDialog是一种更好/更简单的答案。 – JSlain 2014-09-02 22:33:52