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
廣告

© . All rights reserved.