如何使用 JavaFX 为滑块设置动作?


JavaFX 提供了一个名为 Slider 的类,它表示一个滑块组件,用于显示连续的值范围。它包含一个显示数值的轨道。沿着轨道有一个指向数字的滑块。您可以提供滑块的最大值、最小值和初始值。

为滑块设置动作

Slider 类的名为 value 的属性表示滑块的当前值,valueProperty() 返回一个表示滑块当前值的属性对象。您可以通过为此属性添加监听器来设置值更改时的动作,使用 addListener() 方法。

示例

在下面的 JavaFX 示例中,我们创建了一个滑块和一个圆形。

我们实例化了 Translate(变换)类,并将滑块的新值链接到沿 x 轴的平移值,并将平移变换添加到圆形。

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Slider;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class SliderAction extends Application {
   @Override
   public void start(Stage stage) {
      //Drawing a Rectangle
      Circle circle = new Circle(50);
      circle.setFill(Color.DARKRED);
      circle.setStroke(Color.BLUEVIOLET);
      //Setting the slider
      Slider slider = new Slider(0, 500, 0);
      slider.setShowTickLabels(true);
      slider.setShowTickMarks(true);
      slider.setMajorTickUnit(100);
      slider.setBlockIncrement(50);
      //Setting the width of the slider
      slider.setMaxWidth(300);
      //Creating the translation transformation
      Translate translate = new Translate();
      //Linking the transformation to the slider
      slider.valueProperty().addListener(new ChangeListener<Number>() {
         public void changed(ObservableValue <?extends Number>observable, Number oldValue, Number newValue){
            translate.setX((double) newValue);
            translate.setY(50);
            translate.setZ(100);
         }
      });
      //Adding the transformation to the circle
      circle.getTransforms().add(translate);
      //VBox to arrange circle and the slider
      VBox vbox = new VBox(85);
      vbox.setPadding(new Insets(10));
      vbox.getChildren().addAll(circle, slider);
      vbox.setStyle("-fx-background-color: BEIGE");
      //Preparing the scene
      Scene scene = new Scene(vbox, 600, 250);
      stage.setTitle("Slider Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

输出

执行上述程序后,它将生成一个带有滑块和圆形的 JavaFX 窗口。如果移动滑块,圆形将沿着 x 轴滑动。

更新于: 2020年5月18日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.