我如何在javafx DatePicker中查看数十年?

时间:2017-04-28 10:26:23

标签: javafx datepicker

因此,如果某人出生于1980年并且他们想通过鼠标进入他们的年龄,他们将不得不点击年份箭头37次,这是非常荒谬的。

有没有办法查看javafx datepicker中的几十年,以便用户可以选择和选择1980-1990并选择日期?

编辑:由于没有人回答这个问题,我只是为了清晰起见而张贴图片

https://ibb.co/exrVgQ

1 个答案:

答案 0 :(得分:1)

你可以做这样的事情

public class JavaFxTest extends Application{

public static void main(String[] args) {
    launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
    Button prevDecade=new Button("Previous Decade");
    Button nextDecade=new Button("Next Decade");
    DatePicker datePicker=new DatePicker();

    Calendar calendar = Calendar.getInstance();
    datePicker.setValue(LocalDate.of(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)));

    prevDecade.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent arg0) {

            LocalDate value = datePicker.getValue();
            datePicker.setValue(LocalDate.of(value.getYear()-10, value.getMonth(), value.getDayOfMonth()));
            datePicker.show();
        }
    });

    nextDecade.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent arg0) {
            datePicker.show();
            LocalDate value = datePicker.getValue();
            datePicker.setValue(LocalDate.of(value.getYear()+10, value.getMonth(), value.getDayOfMonth()));

        }
    });
    HBox hBox=new HBox();
    hBox.getChildren().addAll(datePicker, prevDecade, nextDecade);
    primaryStage.setScene(new Scene(hBox,500,300));

    primaryStage.show();
}

}

但唯一的问题是,当点击按钮时,datepicker会隐藏日历,所以我们必须明确地执行datepicker.show(),这可能是解决这个问题的一种方法,或者是解决问题的更好方法,是我能想到的全部:)