Javafx 简明教程
JavaFX - DatePicker
Date picker 控件允许用户从图形化日历中选择日期。它可以自定义以显示不同的日期格式,限制可选日期的范围,并且处理与日期选择相关的各种事件。下图显示了典型的日期选择器 −
Creating DatePicker in JavaFX
在 JavaFX 中,日期选择器由名为 DatePicker 的类表示。此类属于包 javafx.scene.control 。通过实例化此类,我们可以创建 JavaFX 中的日期选择器。DatePicker 类的构造函数列出如下 −
-
DatePicker() − 这是默认构造函数,构造未经任何预定义日期的日期选择器。
-
DatePicker(LocalDate date) − 它使用指定日期创建新的日期选择器。
我们可以使用上述任何构造函数在 JavaFX 应用程序内嵌入 DatePicker。最常用的DatePicker类的默认构造函数不接受任何参数。一旦我们实例化此类,我们的下一步将设置初始日期值。之后,实例化任何布局窗格以容纳 DatePicker。最后,设置场景和舞台,以在屏幕上显示日期选择器。
Example
以下 JavaFX 程序演示如何在 JavaFX 应用程序中创建日期选择器。将此代码保存在名为 DatepickerDemo.java 的文件中。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.DatePicker;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.time.LocalDate;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.geometry.Pos;
public class DatepickerDemo extends Application {
@Override
public void start(Stage stage) {
// Creating a Label
Label label = new Label("Please Enter preferred Date: ");
// Create a DatePicker and set its initial value
DatePicker datePicker = new DatePicker();
datePicker.setValue(LocalDate.of(2020, 1, 1));
// Create a Label to display the selection
Label selectLabel = new Label();
selectLabel.setTextFill(Color.RED);
// Add a listener to the value property of the DatePicker
datePicker.valueProperty().addListener((observable, oldValue, newValue) -> {
// Print the selected date
selectLabel.setText("You selected: " + newValue);
});
// Creating a VBox to hold all controls
VBox root = new VBox();
root.setAlignment(Pos.CENTER);
root.setSpacing(10);
root.getChildren().addAll(label, datePicker, selectLabel);
// Create a Scene and set it to the Stage
Scene scene = new Scene(root, 400, 300);
stage.setTitle("DatePicker in JavaFX");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
要从命令提示符编译并执行已保存的 Java 文件,请使用以下命令−
javac --module-path %PATH_TO_FX% --add-modules javafx.controls DatepickerDemo.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls DatepickerDemo
当我们执行上述代码时,它将生成以下输出。
Showing week numbers in the Date Picker
默认情况下, DatePicker 不会在日历中显示星期数。但是,如果需要显示星期数和日期,我们可以将 setShowWeekNumbers() 方法设置为 true ,如下一个示例所示。将此代码保存在名为 DatepickerDemo.java 的文件中。
Example
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.DatePicker;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.time.LocalDate;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.geometry.Pos;
public class DatepickerDemo extends Application {
@Override
public void start(Stage stage) {
// Creating a Label
Label label = new Label("Please Enter preferred Date: ");
// Create a DatePicker and set its initial value
DatePicker datePicker = new DatePicker();
datePicker.setValue(LocalDate.of(2024, 1, 1));
datePicker.setShowWeekNumbers(true);
// Create a Label to display the selection
Label selectLabel = new Label();
selectLabel.setTextFill(Color.RED);
// Add a listener to the value property of the DatePicker
datePicker.valueProperty().addListener((observable, oldValue, newValue) -> {
// Print the selected date
selectLabel.setText("You selected: " + newValue);
});
// Creating a VBox to hold all controls
VBox root = new VBox();
root.setAlignment( Pos.BASELINE_CENTER);
root.setSpacing(10);
root.getChildren().addAll(label, datePicker, selectLabel);
// Create a Scene and set it to the Stage
Scene scene = new Scene(root, 400, 300);
stage.setTitle("DatePicker in JavaFX");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
使用以下命令从命令提示符编译并执行已保存的 Java 文件 −
javac --module-path %PATH_TO_FX% --add-modules javafx.controls DatepickerDemo.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls DatepickerDemo
执行时,以上程序将生成一个 JavaFX 窗口,其中显示带星期数的 DatePicker,如下所示 −