在JavaFx中使用滑块移动圆

在JavaFx中使用滑块移动圆,javafx,slider,Javafx,Slider,我正在尝试创建一个程序,该程序能够使用滑块移动位于圆心的圆。我搞不懂的是如何将圆连接到滑块,以便在滑块移动时它移动。 感谢您的帮助。以下是我的代码: public class Main extends Application { @Override public void start(Stage primaryStage) { try { BorderPane root = new BorderPane(); //Definisanje

我正在尝试创建一个程序,该程序能够使用滑块移动位于圆心的圆。我搞不懂的是如何将圆连接到滑块,以便在滑块移动时它移动。 感谢您的帮助。以下是我的代码:

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
    try {

        BorderPane root = new BorderPane();

        //Definisanje Hedera
        Label Seminarski = new Label("");
        Button Reset = new Button("Reset");
        Reset.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {

            }
        });
        HBox HBoxHeader = new HBox();
        HBoxHeader.setPadding(new Insets(15, 12, 15, 12));
        HBoxHeader.setSpacing(10);
        HBoxHeader.setStyle("-fx-background-color: #ffffff;");
        HBoxHeader.getChildren().addAll(Seminarski, Reset);
        //Kraj Hedera

        //Definisanje Lopte
        Circle Lopta = new Circle(10, Color.RED);
        //Kraj Lopte

        //Definisanje Slajdera
        Slider Slajder = new Slider();
        //Kraj Slajdera

        Lopta.rateProperty().bind(Slajder.valueProperty());

        //Definisanje Futera
        HBox HBoxFooter = new HBox();
        HBoxFooter.setPadding(new Insets(15, 12, 15, 12));
        HBoxFooter.setSpacing(10);
        HBoxFooter.getChildren().addAll(Slajder);
        //Kraj Futera

        //Dodavanje u BorderPane
        root.setTop(HBoxHeader);
        root.setCenter(Lopta);
        root.setBottom(HBoxFooter);
        //Kraj Dodavanja

        Scene scene = new Scene(root,500,400);

        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());

        primaryStage.setScene(scene);
        primaryStage.show();
    } catch(Exception e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    launch(args);
}
public类主扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
试一试{
BorderPane根=新的BorderPane();
//德菲尼萨耶·赫德拉
标签Seminarski=新标签(“”);
按钮重置=新按钮(“重置”);

重置设置动作(新建EventHandler

首先,不要使用BorderPane。这会限制节点布局控制。此外,不推荐使用变量命名约定。在这个小应用程序中,我将根目录设置为VBox,并添加了一个带有圆圈、按钮和滑块的窗格。我没有使用bind,因为我没有太多使用它。我使用了一个移动的值更改侦听器滑块值更改时的圆

import javafx.application.*;
import javafx.beans.value.*;
import javafx.event.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import javafx.stage.*;

/**
 *
 * @author Sedrick
 */
public class JavaFXApplication39 extends Application {

    @Override
    public void start(Stage primaryStage)
    {
        Circle circle = new Circle(10, Color.RED);
        circle.setCenterX(10);
        circle.setCenterY(10);

        Pane pane = new Pane();
        pane.setMinHeight(200);
        pane.getChildren().add(circle);

        Button btn = new Button();
        btn.setText("reset");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event)
            {
                System.out.println("Hello World!");
            }
        });

        VBox root = new VBox();

        root.getChildren().add(pane);

        Slider slider = new Slider();
        slider.valueProperty().addListener((
                ObservableValue<? extends Number> ov, Number old_val,
                Number new_val) -> {
            circle.setCenterX(new_val.doubleValue());
        });

        root.getChildren().add(slider);
        root.getChildren().add(btn);
        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        launch(args);
    }

}
导入javafx.application.*;
导入javafx.beans.value.*;
导入javafx.event.*;
导入javafx.scene.*;
导入javafx.scene.control.*;
导入javafx.scene.layout.*;
导入javafx.scene.paint.*;
导入javafx.scene.shape.*;
导入javafx.stage.*;
/**
*
*@作者塞德里克
*/
公共类JavaFXApplication39扩展了应用程序{
@凌驾
公共无效开始(阶段primaryStage)
{
圆圈=新圆圈(10,颜色为红色);
圆。setCenterX(10);
圆整(10);
窗格=新窗格();
窗格玻璃设置最小高度(200);
pane.getChildren().add(圆圈);
按钮btn=新按钮();
btn.setText(“重置”);

设定动作(新建EventHandler以获得更好的解释。

您应该显示一些代码,并显示您为此所做的实际尝试。请参阅:哦,对不起,我将尽快发布代码,我现在不在计算机旁。我已用代码更新了问题,很抱歉给您带来不便。的示例。您可以调整实现以圆圈的centerX/centerY属性而不是layoutX/layoutY属性为基础。您好。我在计算机上测试了代码,这正是我想做的,但我对侦听器中的代码不熟悉(我是新手)。如果不麻烦,您能解释一下以下代码的作用吗?
slider.valueProperty().addListener((observeValue