JCheckBox 数据模型,MVC

Ago*_*noX 2 java model-view-controller swing

Swing JCheckBox 基于 MVC。因此,我希望 GUI 中的复选框使用我的自定义类提供的数据模型。

那是:

checkBox1被“绑定”到一个属性isBackgroundShown
checkBox2被“绑定”到一个属性isResizingEnabled

复选框应基于属性状态,如果更改,属性状态应触发复选框刷新。

kle*_*tra 5

实际上,AbstractButtons 没有“真实”模型(应该可以跨按钮共享)- ButtonModel 具有每个实例的视图状态(按下、武装)与更多类似数据的状态(如选择)混合。更糟糕的是,按钮上的 selected 属性看起来像一个绑定属性(带有 setter 和 getter)但不是(从不触发 propertyChange)。

您的选择:

  • 实现一个 ButtonModel,它在选定的更改时触发 PropertyChange 并将其设置为 JCheckBox,然后将该模型的新属性绑定到您的数据属性
  • 使用 Action 作为中间件并将其 Action.SELECTED_KEY 绑定到您的数据模型
  • 在 ButtonModel 之上实现一个适配器,如果选择更改,则将 changeEvents 映射到 propertyChangeEvents
  • 使用自动完成一个或另一个的绑定框架(JGoodies Binding 做第一个,BeansBinding 最后一个)