我是Java新手,对Java GUI非常陌生。我有一个非常基本的GUI设置与选项卡窗格。一个基本窗格允许用户向集合添加项。我已经开始设置另一个窗格,我想有一个组合框菜单,列出上述窗格中的项目(即,所有已添加的项目的列表),并允许用户选择要删除的项目(通过一个按钮)。我曾尝试将项目数组传递给"delete"窗格,并以多种不同的方式在ComboBox中使用,但由于ComboBox是在构造函数中创建的,因此在添加项目时它永远不会更新。
访问该数组的最佳方式是什么,因为它是从另一个窗格动态更新的?
我可以想到一些方法来实现它。
将两个面板传递到公共模型接口的引用的最佳方法之一。这将允许第一个面板向其添加项目,当这些更改发生时,第二个面板将收到通知并更新自己。
如果你不想在设置时将这个模型传递给两个面板,你可以使用singleton来代替,使两个面板都可以全局访问这个模式。我倾向于将模型传递给构造函数,因为这样更容易更改模型实现。
一个可能的解决方案是使用DefaultComboBoxModel
作为基本实现。这允许您从模型中添加和删除元素,但也允许您非常容易地将组合作为模型进行分配。但这将归结为您想要通过集合实现的目标。
另一种方法是将ChangeListener
附着在JTabbedPane
上。当活动选项卡改变时,您可以检查第一个窗格中的值,并将它们分配给第二个窗格。
这是一个比第一个更耦合的,因为它假设选项卡窗格"知道"两个窗格之间的关系(并且知道哪两个窗格需要更新)