JavaFX - 日期选择器



日期选择器 是一种控件,允许用户从图形日历中选择日期。它可以自定义以显示不同的日期格式,限制可选择日期的范围,以及处理与日期选择相关的各种事件。下图显示了一个典型的日期选择器 -

JavaFX DatePicker

在 JavaFX 中创建 DatePicker

在 JavaFX 中,日期选择器由名为 DatePicker 的类表示。此类属于 javafx.scene.control 包。通过实例化此类,我们可以在 JavaFX 中创建日期选择器。DatePicker 类的构造函数列出如下 -

  • DatePicker() - 这是默认构造函数,它构造一个没有任何预定义日期的日期选择器。

  • DatePicker(LocalDate date) - 它创建一个具有指定日期的新日期选择器。

我们可以使用上述任何一个构造函数将 DatePicker 嵌入到 JavaFX 应用程序中。最常用的 DatePicker 类的默认构造函数,它不接受任何参数。一旦我们实例化此类,我们的下一步将是设置初始日期值。之后,实例化任何布局窗格以容纳 DatePicker。最后,设置场景和舞台以在屏幕上显示日期选择器。

示例

以下 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

输出

当我们执行上述代码时,它将生成以下输出。

DatePicker Output

在日期选择器中显示星期数

默认情况下,DatePicker 不会在日历中显示星期数。但是,如果需要显示日期以及星期数,那么我们可以将 setShowWeekNumbers() 方法设置为 true,如下一示例所示。将此代码保存在名为 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(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,如下所示 -

DatePicker Output2
广告