Javafx 简明教程

JavaFX - Spinner

Spinner 是一个 UI 控件,允许用户从预定义范围或有序序列中选择一个值。它可以是可编辑的或不可编辑的。如果它可编辑,则用户可以键入值,否则不能键入。它还提供向上和向下箭头,以便用户可以浏览序列值。下图展示了一个微调器 −

spinner

Creating a Spinner in JavaFX

在 JavaFX 中,通过实例化一个名为 Spinner 的类来创建微调器。此类属于包 javafx.scene.control 。列出 Spinner 类的部分广泛使用的构造函数如下 −

  1. Spinner() − 用于创建一个空的微调器。

  2. Spinner(double minVal, double maxVal, double initialVal) − 使用指定的最大值、最小值和初始值创建一个新的微调器。

  3. Spinner(double minVal, double maxVal, double initialVal, double valToStepBy) − 用于构造新的纺纱器,该纺纱器具有指定的最小值、最大值和初始值以及增量量。

Example

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

Setting the Size of Spinner

要设置纺纱器的大小,可以使用 setPrefSize() 方法。这是一个内置方法,它接受高度和宽度作为参数。

Example

在以下示例中,我们将在 JavaFX 应用程序中创建一个指定大小的 Spinner。将此代码保存在名为 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