2014-12-07 60 views
1

我试图在我正在开发的swing gui上创建“持续时间”字段。为此,我有3个JSpinner组件。天,小时和分钟。JGoodies:将多个摆动组件绑定到单个模型字段

JSpinner durationDaySpinner; 
JSpinner durationHourSpinner; 
JSpinner durationMinuteSpinner; 

如果可能的话,我想“绑定”这3个组成部分回单域字段:

long durationInMs; 

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

谁能劝我怎么会得到这与JGoodies绑定?我只将单个组件绑定到模型/域字段。

干杯

回答

1

你必须添加一个单独的ValueModel每个旋转,每个绑定到ValueModel适当的微调,然后添加一个PropertyChangeListener所有三个ValueModels。当三个微调边界ValueModels中的任何一个所拥有的值发生变化时,抓住每个值,像您在问题中所做的那样计算ms,并将其设置为要设置的bean属性(或ValueModel)。

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

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

例如,

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