2014-12-07 59 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);