I'm trying to create a "duration" field on a swing gui I'm developing. To do this, I've got 3 JSpinner components. Days, Hours and Minutes.
JSpinner durationDaySpinner;
JSpinner durationHourSpinner;
JSpinner durationMinuteSpinner;
If possible I'd like to "bind" these 3 components back to a single domain field:
long durationInMs;
i.e.
durationInMs = days*24*60*60*1000 + hours*60*60*1000 + minutes*60*1000;
Can anyone advise how I'd get this working with JGoodies binding? I've only ever bound single components to model/domain fields.
Cheers
You'd have to add a separate
ValueModel
for each spinner, bind eachValueModel
to the appropriate spinner, then add a onePropertyChangeListener
to all threeValueModels
. When the value held by any of the three spinner-boundValueModels
changes, grab each value, calculate the ms like you've done in the question, and set that on the bean property (orValueModel
) you want to set.Essentially you're adding another mini-model between the domain model you're binding into and the UI model in order to map multiple UI-bound components onto a single domain property.
Also, for readability I'd suggest using the
java.util.concurrent.TimeUnit
rather than lots of multiplications.Eg,