我正在尝试在我正在开发的 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/