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轴滑动。