JavaFX - 微調器 (Spinner)



微調器 (Spinner) 是一種 UI 控制元件,允許使用者從預定義的範圍或有序序列中選擇一個值。它可以是可編輯的或不可編輯的。如果它是可編輯的,使用者可以輸入一個值,否則不行。它還提供向上和向下箭頭,以便使用者可以逐步瀏覽序列的值。下圖顯示了一個微調器:

Spinner

在 JavaFX 中建立微調器

在 JavaFX 中,微調器是透過例項化名為 Spinner 的類來建立的。此類屬於包 javafx.scene.control。下面列出了一些廣泛使用的 Spinner 類的建構函式:

  • Spinner() - 用於建立一個空的微調器。

  • Spinner(double minVal, double maxVal, double initialVal) - 它建立一個具有指定最小值、最大值和初始值的新微調器。

  • Spinner(double minVal, double maxVal, double initialVal, double valToStepBy) - 用於構造一個具有指定最小值、最大值和初始值以及增量的新微調器。

在 JavaFX 中建立微調器時,我們的第一步是使用上面提到的任何建構函式例項化 Spinner 類。最小值、最大值和初始值的數 據型別可以是 double 或 integer。接下來,透過將 Spinner 物件傳遞給其建構函式來定義佈局面板,例如 Vbox 或 Hbox。最後,設定場景和舞臺以在螢幕上顯示微調器。

示例

以下 JavaFX 程式演示瞭如何在 JavaFX 應用程式中建立微調器。將此程式碼儲存在名為 JavafxSpinner.java 的檔案中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Spinner;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.geometry.Pos;
public class JavafxSpinner extends Application {
   @Override
   public void start(Stage stage) {
      // creating a label 
      Label newlabel = new Label("Sample Spinner: ");
      // creating spinner and setting min, max, initial value
      Spinner newSpinner = new Spinner(0, 100, 25); 
      // vbox to hold spinner
      VBox vbox = new VBox(newlabel, newSpinner);
      vbox.setAlignment(Pos.CENTER); 
      // creating stage and scene
      Scene scene = new Scene(vbox, 400, 300);
      stage.setScene(scene);
      stage.setTitle("Spinner in JavaFX");
      stage.show();
   }
      public static void main(String[] args) {
      launch(args);
   }
}

要從命令提示符編譯和執行儲存的 Java 檔案,請使用以下命令:

javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxSpinner.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxSpinner

輸出

當我們執行上述程式碼時,它將生成以下輸出。

Spinner Output

設定微調器的大小

要設定微調器的大小,我們可以使用 setPrefSize() 方法。這是一個內建方法,它接受高度和寬度作為引數。

示例

在下面的示例中,我們將要在 JavaFX 應用程式中建立一個指定大小的微調器。將此程式碼儲存在名為 DemoSpinner.java 的檔案中。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Spinner;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.geometry.Pos;
public class DemoSpinner extends Application {
   @Override
   public void start(Stage stage) {
      // creating labels for spinner
      Label newlabel = new Label("Enter Date of Birth: ");
      Label setYear = new Label("Year: ");
      Label setMonth = new Label("Month: ");
      Label setDay = new Label("Day: ");
      // creating spinners and setting sizes
      Spinner year = new Spinner(1998, 2020, 2000);
      year.setPrefSize(65, 25);
      Spinner month = new Spinner(1, 12, 1);
      month.setPrefSize(60, 25);
      Spinner day = new Spinner(1, 31, 1);
      day.setPrefSize(60, 25);
      // HBox to hold labels and spinners
      HBox box1 = new HBox();
      box1.setPadding(new Insets(15, 12, 15, 12));
      box1.setSpacing(10);
      box1.getChildren().addAll(setYear, year, setMonth, month, setDay, day);
      // VBox to hold HBox and Label
      VBox box2 = new VBox();
      box2.setAlignment(Pos.CENTER); 
      box2.setPadding(new Insets(15, 12, 15, 12));
      box2.setSpacing(10);
      box2.getChildren().addAll(newlabel, box1);
      // creating scene and stage
      Scene scene = new Scene(box2, 400, 400);
      stage.setScene(scene);
      stage.setTitle("Spinner in JavaFX");
      stage.show();
   }
      public static void main(String[] args) {
      launch(args);
   }
}

使用以下命令從命令提示符編譯和執行儲存的 Java 檔案:

javac --module-path %PATH_TO_FX% --add-modules javafx.controls DemoSpinner.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls DemoSpinner

輸出

執行上述程式碼後,它將生成以下輸出。

Spinner Output2
廣告
© . All rights reserved.