2010-08-13 2 views
1

사용자가 Date를 선택할 수 있도록 JSpinner를 만들려고합니다. 낮은 날짜 제한과 상위 날짜 제한이 있어야합니다. 나는 또한 초기 값을 더 낮은 날짜 제한으로 원한다. 불행히도 내 문제는 초기 값으로 하한을 사용할 수 없다는 것입니다 (JSpinner는 단순히 응답하지 않습니다). 여기 내 코드는 다음과 같습니다.JSpinner SpinnerDateModel 질문

SpinnerDateModel model = new SpinnerDateModel(); 
model.setStart(minTime); //lower limit 
model.setEnd(maxTime); //upper limit 
model.setValue(minTime); //doesn't like this! 
model.setCalendarField(Calendar.MINUTE); 
JSpinner timePicker = new JSpinner(model); 
timePicker.setEditor(new JSpinner.DateEditor(timePicker, "HH:mm dd/MM/yy")); 

초기 값을 하한선 전후로 1 분으로 설정하면 정상적으로 작동합니다. 하지만 제 요구 사항에 대해서는 그럴 필요가 없습니다.

도움 말?

+0

이 질문에 대한 직접적인 대답은 아니지만 NetBeans에서 GUI 빌더를 사용하려고 할 수 있습니다. 코드로 스윙 구성 요소를 구성하면 많은 시간을 절약 할 수있었습니다. 귀하의 경우 JSpinner를 만들고 속성 패널에서 "모델"을 구성 할 수 있습니다. –

+0

어쩌면 시간을 절약 할 수 있지만 수동으로 처리하는 것이 더 빠릅니다 (그리고 결과 코드가 훨씬 깔끔하고 체계적입니다). 어쨌든이 문제가 어떻게 해결 될지 나는 모르겠다. –

+0

정확히 무엇을 찾고있는가, http://www.toedter.com/en/jcalendar/index.html에서 달콤한 오픈 소스 데이터 선택기가 있습니다 – Andy

답변

2

나에게 버그처럼 보입니다. 나는 어떤 코드로 엉망이되었고 setValue에 무엇이 건간에 나는 value이라고 부르며 적어도 calendarField 단위는 minTime보다 커야합니다.

model.setCalendarField(Calendar.YEAR)을 사용한 경우 minTime으로 2010 년을 사용했다고 가정하면 value은 2011 년의 날짜 여야합니다.

Sun에 따르면 SpinnerDateModel 생성자가 적용하는 불변량은 minimum <= value <= maximum이므로이 문제가 발생하지 않아야합니다.

마음에 오는 첫 번째 해결 방법은 사용자가 및 setValue() 메서드를 무시하고 원하는 minTime을 수동으로 확인하는 사용자 지정 SpinnerDateModel을 만드는 것입니다.