【发布时间】:2017-07-28 08:20:01
【问题描述】:
在我的 Java 应用程序中,我有一个复杂的 GUI,它重复了某些 JPanel(自定义控件),比如说 100 次(实际上它可能更多,但我不想让这个例子太复杂)。 这 100 个 JPanel 中的每一个都包含 4 个 JTextBox 控件,它们向用户显示某些值。
一个面板的 JTextBoxes 可能是空的,而在另一个面板中可能只有一个值,在其他一些面板中,所有框都可能显示一些数字,你明白了 - 我不知道哪个面板的哪个文本框将包含哪个数据。
现在,为了减少内存占用,我开始学习享元设计模式。这似乎正是我需要的东西,但是,如果我保留一个 JPanel 作为种子,并用它来表示其他 99 个面板(只是相应地更改 JTextBox 值),这意味着所有这些面板将共享共同的参考。
在这种情况下,更改其中一个中的 JTextBox 值也会更改所有其他中的值,对吗? 如何克服这个问题,同时仍然保持应用程序的低内存占用?
我错过了什么吗?
【问题讨论】:
-
是的,这个问题被简化了。在我的实际应用程序中,用户必须了解他们当前存储的所有可能数据
-
什么是“JTextBox”?请更具体地描述您的需求。 Swing 已经有轻量级的渲染器类型组件,例如 JTable,但很难知道它是否适合您的需要。
-
你可能想对 MVC 做一些研究
-
抱歉耽搁了。不,我实际上并没有尝试创建电子表格。这些面板有一些特殊的功能,通常它们以一对夫妇的形式显示,但在某个“历史”窗口中,我实际上必须显示一个完整的列表,其中包含这些面板彼此堆叠。
标签: java swing design-patterns flyweight-pattern