0

在进行一些更改后刷新所有数据的最流畅(简单且设计良好)的方法是什么?我有一个应用程序,可以在其中打开多个显示相同数据的窗口。用户可以在其中一个窗口中编辑一个节点,但我需要在每个视图中刷新该节点(或其子节点)

示例: 我使用 TopComponent中的OutlineView使用ExplorerView,它以树形结构显示所有章节。但是我可以多次打开这个窗口(比如 MS Word 中的“新窗口”,它是同一数据的另一个“视图”)。当我更改一章的标题时,我需要在所有可见的地方(在所有展开的节点中)刷新它。

我看到了一种解决方案,但它有一些优点和缺点:进行我自己的查找并将所有打开的 ExplorerViews 的所有打开的根节点存储在其中。然后在每次编辑时,只需循环浏览所有打开的根节点并在它们上调用一些方法来重新创建查看的结构(调用 setChildren ......就像第一次显示时一样)。但是树视图崩溃了。如果我要创建一些机制,一些 OutlineView 的实现,它会记住所有展开的节点,所以它会重新创建展开的树(但不是整个树,只是原样),它可能需要一些时间,当数据太多了,对吧?

4

1 回答 1

1

每个视图都由一组节点构建。如果您在一个节点中修改数据,则修改会反映在包含该节点的视图中,但不会反映在其他视图中(不是其他节点):-(。

当我构建一个基于 NB RCP 的应用程序时,我构建了一个带有“实体”的模型。这些实体具有我使用 NetBeans Lookup 建模的“能力”。这些通常是普通的 POJO。

然后,当我想“看到”一个实体时,我会为它创建一个“节点”。您可以拥有任意数量的节点(任意数量的“MS Word”视图),但您希望在模型中保留一个“树”。

如果我更改“实体”中的属性,则此更改会传播到所有监听它的节点。您可能想了解如何将“能力”与“行动”联系起来

于 2012-04-04T19:53:09.460 回答