java - JGoodies:将多个 swing 组件绑定(bind)到单个模型字段

标签 java swing jgoodies

我正在尝试在我正在开发的 Swing GUI 上创建一个“持续时间”字段。为此,我有 3 个 JSpinner 组件。天、小时和分钟。

JSpinner durationDaySpinner;
JSpinner durationHourSpinner;
JSpinner durationMinuteSpinner;

如果可能的话,我想将这 3 个组件“绑定(bind)”回单个域字段:

long durationInMs;

durationInMs = days*24*60*60*1000 + hours*60*60*1000 + minutes*60*1000;

谁能告诉我如何让它与 JGoodies 绑定(bind)一起工作?我只将单个组件绑定(bind)到模型/域字段。

干杯

最佳答案

您必须为每个微调器添加一个单独的 ValueModel,将每个 ValueModel 绑定(bind)到相应的微调器,然后向所有三个 ValueModels 添加一个 PropertyChangeListener。当三个旋转器绑定(bind)的 ValueModels 中的任何一个所持有的值发生变化时,获取每个值,像您在问题中所做的那样计算毫秒,然后将其设置在您想要设置的 bean 属性(或 ValueModel)上。

本质上,您是在要绑定(bind)的域模型和 UI 模型之间添加另一个迷你模型,以便将多个 UI 绑定(bind)组件映射到单个域属性上。

此外,为了便于阅读,我建议使用 java.util.concurrent.TimeUnit 而不是大量乘法。

例如,

long ms = TimeUnit.DAYS.toMillis(days) + TimeUnit.HOURS.toMillis(hours) + TimeUnit.MINUTES.toMillis(minutes);    

关于java - JGoodies:将多个 swing 组件绑定(bind)到单个模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27348249/

相关文章:

java - 如何让大组件在使用JGoodies FormLayout时不至于炸毁布局?

java - Spring 3 @PathVariable 验证

java - 投入AOP后

java - 在单行中初始化列表

java - 如何在编辑时在 JTable 单元格上方显示文本

java - 跨面板对齐 Swing 组件

java - 在java android中覆盖子类中的属性类型

java - JPanels 文本字段 GBC

java - component.get MouseMotionListener 返回多个

swing - 如何使用 JGoodies FormLayout 指定最小和最大单元格大小?