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.