更新父JFrame的问题

时间:2010-11-22 19:01:30

标签: java events jtable jframe

首先,让我们知道我是java新手,这是怪癖。我是一个经验丰富的程序员,有各种语言,这可能就是我被困的原因......

我有一个应用程序,可能由于设计不佳,通过用户的工作流程生成新的JFrame。我的问题是,如果生成的JFrame中有事件,是否能够联系并将数据或事件传递给它的父级?

我已经读过使用JDialog似乎是设计的方式,但我们假设这不是一个选项。本质上,JFrame1包含一个带有数据列表的JTable。一个动作产生JFrame2,用户“做某事”会影响JFrame1中列表中的数据。关闭JFrame2后,有没有办法根据JFrame2的close事件控制JTable?

这是一个非常基本的概念,我似乎无法找到允许这种行动的机制。

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用“听众”来收听各种活动。

听起来您可能想要从How to Write a Window Listener开始。

  

我已经读过使用JDialog似乎是设计方法,但我们假设这不是一种选择。

为什么呢?代码是相同的,JDialogs是为此目的而设计的。您需要使用JFrame的具体要求是什么?

  

一个动作产生JFrame2,用户“做某事”会影响JFrame1中列表中的数据。关闭JFrame2后,有没有办法根据JFrame2的close事件控制JTable?

这是一种常见的设计。用户选择要更改或更新的行,并创建模型对话框以显示所有数据,以便可以更改。保存对话框后,表中的数据将更新。如果这是您的要求,那么您只需将TableModel传递给对话框即可。然后在关闭对话框时更新TableModel,表格将自动重新绘制。

答案 1 :(得分:0)

您必须使用窗口侦听器捕获窗口关闭事件。窗口侦听器还需要对需要更改的数据的引用。

答案 2 :(得分:0)

除了在JFrame或JDialog上使用Window.addWindowListener()之外,还可以考虑使用模型视图方法。让close事件修改表的数据,而不是表本身。使用AbstractTableModel作为表的模型,并监听数据的更改。