2017-02-27 14 views
0
내가 키보드를 사용하여 날짜 선택기의 수정 날짜를 활성화하려면이 코드를

두 번 발사 :이벤트 필터는 하나 개의 동작

DatePicker startDatePicker = new DatePicker(); 
startDatePicker.addEventFilter(KeyEvent.KEY_PRESSED, (event) -> { 

     if (event.getCode().equals(KeyCode.UP)){ 

       startDatePicker.setValue(startDatePicker.valueProperty().get().plusDays(1)); 
       event.consume(); 


     }else if (event.getCode().equals(KeyCode.DOWN)){ 

       startDatePicker.setValue(startDatePicker.valueProperty().get().minusDays(1)); 
       event.consume(); 


     } 

    }); 

그러나 나는 모든 키를 누를 때의 두 배 이벤트가 발생하는 일없이 이잖아요. 나는 KEY_PRESSED와 KEY_RELEASED를 사용하여 시도했으나 이벤트를 소비하거나 소비하지는 않았다.하지만 내가 항상하는 일은 항상 두 번 (콘솔의 출력을 사용하여 테스트 됨, 모든 키 누르기는 두 줄을 생성 함) 상관없이 시도했다. 지금 당장은 부울 변수를 사용하여이 문제를 해결하기 위해 노력하고 있으므로 이벤트는 매번 작동하지만 이보다 더 나은 솔루션이 있어야합니다.

답변

1

나는 그것이 왜 일어나고 있는지 완전히 확신하지 못합니다. 날짜 선택 도구가 이벤트를 수신하고 날짜 선택 도구로 리디렉션 한 다음 날짜 선택 도구 자체가 이벤트를 독립적으로 수신하는 것처럼 보입니다. 아마도 버그 일 겁니다. 텍스트 필드에 리스너를 추가하는 것으로 충분합니까?

startDatePicker.getEditor().addEventFilter(KeyEvent.KEY_PRESSED, ...); 
+0

이 방법이 효과적입니다. 누군가가 버그 티켓을 만들어야합니다 :) – T3rm1