2014-12-07 6 views
1

스윙 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

당신은 한 PropertyChangeListenerValueModels에 추가 한 후, 적절한 회 각 ValueModel를 결합, 각 회 전자에 대한 ValueModel 별도의 추가해야 할 것이다. 세 개의 스피너 바운드 값인 ValueModels 중 하나가 보유한 값이 변경되면 각 값을 가져 와서 질문에서 수행 한 것처럼 ms를 계산하고 설정하려는 bean 속성 (또는 ValueModel)에서 설정합니다.

본질적으로 바인딩 할 도메인 모델과 UI 모델 사이에 여러 개의 UI 바인딩 된 구성 요소를 단일 도메인 속성에 매핑하기 위해 다른 미니 모델을 추가하고 있습니다. 또한 java.util.concurrent.TimeUnit을 사용하는 것이 좋습니다.

예,

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