2017-02-27 88 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

This works。有人應該創建一個錯誤票:) – T3rm1

相關問題