1

我目前正在使用 Swing 开发 Java 桌面应用程序。我正在使用 jdesktop.org 的 beansbinding 框架来同步 GUI 组件和数据对象的状态。但是我遇到了框架问题,迫使我在 GUI 组件和数据对象之间来回手动传输状态信息。

是否有 beanbinding 框架的替代品(我认为 NetBeans 也使用它?)?有什么可以推荐的策略(比如根本不使用绑定?该怎么做?)?

如果您想知道我在使用 beanbinding 时遇到了什么问题:

  • 它在 JTables 中替换了我的 TableModel(所以我不能使用自己的行或删除行)
  • 某些属性不可访问或不可用,例如 selectedItem 或 selectedObject(至少在 JComboBox、JList 等中一致)
  • 某些属性要么是只读的要么是只写的(比如 selectedItem 或 selectedObject)
  • 我可以为 null 值绑定特殊值,但我不能例如使用自定义映射函数或其他东西将列表中的数字映射到 JComboBox 中的字符串(我知道我可以使用适当的 toString 方法创建一个特殊类,但是这迫使我为我的数据集创建特殊的包装对象)
  • ...
4

1 回答 1

2

虽然可用,但 Beansbinding 已经死了——当它远未获得该版本号时,它被人为地推入了 1.x 状态,并且此后没有太大变化。无论您发现什么问题,它们都不会得到解决 - 除非您自己解决 :-) 至于特定的项目符号:

  • 总体思路是 TableModel 是一个对象列表,其列绑定到对象的属性(bean 或 EL)。它通常是一个支持修改的 ObservableList。
  • JComboBox 是一个建筑工地。JList/JTable 中的选择绑定可用且一致
  • 使(单个)选择可写并不是什么大问题(在孵化器中使用 JXTable 的适配器进行了实验)。还没有看到只写属性,你的意思是什么?
  • 与每个绑定框架一样,您需要转换器来映射值类型(这与渲染无关,顺便说一句,尽管在编辑中起作用)

当前明显的替代方案是 JGoodies Binding。有一阵子没仔细看,最近看到它出了一个新版本,所以肯定在开发和使用中。未来的替代方案可能是 fx 绑定——它仍处于起步阶段,等待善良的灵魂围绕其准系统构建一些可用的框架。

于 2011-11-14T09:54:34.863 回答