JavaFX DatePicker 隐藏在 mouseExited 上

JavaFX DatePicker hide on mouseExited

我该如何设置这种行为?目前悬停(mouseEntered)很好,只要光标进入 DatePicker 就会显示 DateChooser,但是只要鼠标离开 DatePicker 它就会隐藏 DateChooser。我找不到可以访问 DateChooser 本身的方法。

仅修复了当光标移到 DatePicker 下时不关闭 DateChooser,但只要鼠标离开 DateChooser 就应该关闭。

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

访问皮肤允许您访问弹出窗口的内容,这允许您访问弹出窗口的 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 包中的皮肤,但它是一个解决方案。