为您的装饰器ComboBoxModel。装饰者应该管理selectedItem属性,而其他所有事情都由委托管理。
这样,您将拥有1个原始模型,并在组合框上放置不同的装饰器:
DefaultComboBoxModel original = ...;DecoratedModel firstModel = new DecoratedModel( original );JComboBox firstCombo = new JComboBox( firstModel );DecoratedModel secondModel = new DecoratedModel( original );JComboBox secondCombo = new JComboBox( secondModel );
然后可以在original模型上执行对数据的更改,这将同时调整所有组合框中的数据
注意:确保连接到装饰器的侦听器以装饰的模型作为源而不是委托模型接收事件。这是编写装饰器时的常见错误
编辑
一种替代方法是拥有不是的基本数据结构,ComboBoxModel并ComboBoxModel使用该数据结构创建其实现。然后,您可以创建所有共享相同数据结构的不同组合框模型实例。



