2016-12-15 7 views
0

Как установить такой тип поведения ?, в настоящее время hover (mouseEntered) в порядке, он показывает DateChooser всякий раз, когда курсор входит в DatePicker, но всякий раз, когда мышь выходила из DatePicker, он скрывает DateChooser. Я не могу найти такой метод, который дает доступ к самому DateChooser.JavaFX DatePicker скрыть на mouseExited

enter image description here

подмигнули только фиксируется не закрывать DateChooser, когда курсор проходит под DatePicker, но DateChooser должно быть близко, когда мышь выходит из него.

datePicker.setOnMouseEntered((event)->{datePicker.requestFocus();datePicker.show();}); 
    datePicker.setOnMouseExited((event)->{if(event.getY()<23)datePicker.hide();}); 

ответ

1

Доступ к коже позволяет получить доступ к содержимому всплывающего окна, которое позволяет получить доступ к всплывающему-х Scene, что позволяет добавить onMouseExited обработчика этой сцены для скрытия всплывающего окна:

EventHandler<MouseEvent> exitHandler = e -> datePicker.hide(); 
datePicker.setOnShown(evt -> { 
    DatePickerSkin skin = (DatePickerSkin) datePicker.getSkin(); 
    Scene sc = skin.getPopupContent().getScene(); 
    sc.setOnMouseExited(exitHandler); 
}); 

Не очень хорошее решение, так как для этого требуется доступ к коже, находящемуся в пакетах com.sun, но это решение.