2010-11-22 34 views
0

首先,让我们知道我是新来的Java和它的怪癖。我是一个经验丰富的程序员与各种语言,这可能是为什么我卡...问题更新父JFrame

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

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

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

谢谢!

回答

0

您可以使用“侦听器”来侦听各种事件。

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

我读过使用JDialog似乎是设计的方式,但让我们假设这不是一个选项。

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

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

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

+0

针对这个问题,“为什么?”:说实话,在这一点上需要大量的重新分解。尽管当我有更多时间时,我并不害怕这样做,但我有一些限制,如果现有设计有能力,则可以使用现有设计。谢谢你的回复。我发现他们都很有见地。 – attach 2010-11-22 19:32:46

0

您将不得不使用窗口监听器捕获窗口关闭事件。窗口监听器还需要对需要更改的数据的引用。

0

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