如何使用 JavaFX 为滑块设置操作?
javafxobject oriented programmingprogramming更新于 2025/6/26 4:52:17
JavaFX 提供了一个名为 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) { //绘制矩形 Circle circle = new Circle(50); circle.setFill(Color.DARKRED); circle.setStroke(Color.BLUEVIOLET); //设置滑块 Slider slider = new Slider(0, 500, 0); slider.setShowTickLabels(true); slider.setShowTickMarks(true); slider.setMajorTickUnit(100); slider.setBlockIncrement(50); //设置滑块的宽度 slider.setMaxWidth(300); //创建平移变换 Translate translate = new Translate(); //将变换链接到滑块 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); } }); //为圆形添加变换 circle.getTransforms().add(translate); //用于排列圆形和滑块的垂直框 VBox vbox = new VBox(85); vbox.setPadding(new Insets(10)); vbox.getChildren().addAll(circle, slider); vbox.setStyle("-fx-background-color: BEIGE"); //准备场景 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 轴滑动。