【发布时间】:2016-09-27 13:39:03
【问题描述】:
在我的应用程序中,我将几个自定义 JPanel 添加到 JTabbedPane。单个 JPanel 提供了一个功能,我已将它们添加到 JTabbedPane 中,以便用户可以轻松地在模块之间切换。
所有这些自定义 JPanel 都对同一组数据进行操作,这意味着如果其中一个模块必须更改数据中的某些内容(例如,列表),则所有其他面板都应该知道该更改并做出相应的反应。
但是,使用 JTabbedPane,您首先需要实例化这些 JPanel 以将它们添加到 JTabbedPane - 您只需执行一次。
我有一个问题 - 假设用户向面板 A 中的集合添加了一些内容(由所有面板共享)并切换到面板 B。在这种情况下会发生什么? B 应该如何知道该集合中已添加了某些内容?
我的想法是简单地检测一个选项卡切换事件,并调用 B 的方法来考虑新数据。但我觉得这不是应该的。
你有什么建议?
【问题讨论】:
-
“在我的应用程序中,我有几个自定义的 JPanel..” 为什么它们是“自定义”的?你的意思是
extends JPanel? -
“同一组数据” 这表明为(假定相关的)数据保留一个模型,该模型在各个面板中表示。
-
@AndrewThompson 是的,我的意思是他们扩展了 JPanel。有模型是一回事,在这种情况下如何正确使用它是个问题。例如,我的 JPanel 可能看起来完全不同(不同的按钮等),具体取决于当前数据。
-
@AndrewThompson 我们来谈谈一个简单的 JComboBox。我通过将 DefaultComboBoxModel 传递给它 + 自定义渲染器来初始化它。 DefaultComboBoxModel 包含来自我的“模型”的集合。如果集合被修改了怎么办?我需要手动更新组合框模型,对吗?
-
“我的意思是他们扩展了 JPanel。” 为什么?
标签: java swing jtabbedpane