Деструктурирование по умолчанию имеет значение только при передаче объекта, который не имеет соответствующих свойств. = {}
по умолчанию для всего параметра позволяет вообще не пропускать (пустой) объект.
Он делает drawES6Chart()
эквивалентным drawES6Chart({})
.
Вы можете получить всплывающее содержимое DatePicker из DatePickerSkin. См. Эту демонстрацию для реализации:
public class DatePickerPopupDemo extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 400, 400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
DatePickerSkin datePickerSkin = new DatePickerSkin(new DatePicker(LocalDate.now()));
Node popupContent = datePickerSkin.getPopupContent();
root.setCenter(popupContent);
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Если верхняя панель не нужна, вы можете посмотреть ее и скрыть .
DatePickerSkin datePickerSkin = new DatePickerSkin(new DatePicker(LocalDate.now()));
Node popupContent = datePickerSkin.getPopupContent();
// force a css layout pass to ensure that lookup calls work
popupContent.applyCss();
popupContent.lookup(".month-year-pane").setVisible(false);
root.setCenter(popupContent);
Обновление:
Начиная с JDK 9 DatePickerSkin
является частью открытого API и использует закрытая реализация com.sun.[...]
больше не требуется. (См. JavaDoc )
Кроме того, , как указано в комментариях , чтобы получить выбранное значение, вам нужно получить доступ к DatePicker
, из которого вы извлекли (например, сохраняя его как переменную).
DatePicker datePicker = new DatePicker(LocalDate.now());
DatePickerSkin datePickerSkin = new DatePickerSkin(datePicker);
Node popupContent = datePickerSkin.getPopupContent();
//[...]
LocalDate selectedDate = datePicker.getValue();
Вы также можете прослушать изменения значений, добавив ChangeListener
к соответствующему свойству:
datePicker.valueProperty().addListener(new ChangeListener<LocalDate>() {
@Override
public void changed(ObservableValue<? extends LocalDate> observable, LocalDate oldValue, LocalDate newValue) {
System.out.println("New Value: " + newValue);
}
});
//Or using neat lambda
datePicker.valueProperty().addListener((observable, oldValue, newValue) -> {
System.out.println("New Value: " + newValue);
});
Чтобы удалить «месяц-год», используйте:
DatePickerSkin datePickerSkin = new DatePickerSkin(date_picker);
Node popupContent = datePickerSkin.getPopupContent();
((DatePickerContent) popupContent).getChildren().remove(popupContent.lookup(".month-year-pane"));
DatePickerSkin
не является общедоступным классом API. (Это будет публичный класс API в JavaFX 9 , хотя имя пакета будет изменено и, возможно, API.) довольно просто , чтобы реализовать это непосредственно с любым API-интерфейсом нужно (и опустить, что вам не нужно). – James_D 8 January 2016 в 20:47