javaFX:使用translatetransition移动具有绝对坐标的形状

标签 java sorting animation javafx

我正在使用 javaFX 实现合并排序动画。我想使用绝对坐标来移动形状。我使用 Translatetransition()setToX()setToY() 。然而,这些形状位于具有固定间距的 HBox 中。我尝试将它们移到不同的地方,但它不起作用。 setToX()setToY() 使用 HBox 作为引用。形状始终具有固定的间距,并且形状的顺序不会改变。我使用 getLayoutX() 和 getLayoutY() 来获取绝对坐标。谁能帮帮我?

这些是相关代码:

HBox hBox = new HBox(20);

    hBox.setAlignment(Pos.CENTER);
    hBox.setPadding(new Insets(0,0,0,0));
    ArrayList<StackPane> list = new ArrayList<>();
    Random random = new Random(5);
    for (int i = 0; i < 12; i++) {
        int num = random.nextInt(10);
        Rectangle rectangle = new Rectangle(40, (num * 10) + 50);
        rectangle.setFill(Color.valueOf("#0000FF"));
        Text text = new Text(String.valueOf(num));
        StackPane stackPane = new StackPane();
        stackPane.setPrefSize(rectangle.getWidth(), rectangle.getHeight());
        stackPane.setId(String.valueOf(num));
        stackPane.getChildren().addAll(rectangle, text);
        StackPane.setAlignment(text,Pos.TOP_CENTER);
        stackPane.setAlignment(Pos.TOP_CENTER);
        list.add(stackPane);
    }


    hBox.getChildren().addAll(list);

    BorderPane borderPane = new BorderPane();
    borderPane.setCenter(hBox);

这是翻译功能

 private TranslateTransition AddtoOriginal(StackPane sp, double speed,int X,int Y){

    TranslateTransition t = new TranslateTransition();
    t.setNode(sp);
    t.setDuration(Duration.millis(speed));
    t.setToX(X);
    t.setToY(Y);
    return t;

}

这是保存绝对坐标

 Scene scene = new Scene(borderPane, 1000, 800);
    primaryStage.setTitle("Sorting");
    primaryStage.setResizable(false);
    primaryStage.setScene(scene);
    primaryStage.show();

    for (int i = 0; i < 12; i++) {
        int centerx = (int) list.get(i).getLayoutX();
        int centery = (int) list.get(i).getLayoutY();
        CenterX.add(i,centerx);
        CenterY.add(i,centery);
        System.out.println(centerx);
        System.out.println(centery);
    }

最佳答案

请使用Group或Pane作为容器而不是Hbox。 HBox 有自己的布局策略,不支持绝对坐标。

关于javaFX:使用translatetransition移动具有绝对坐标的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42993423/

相关文章:

java - 是否可以将项目拖到 RecyclerView 之外?

java - 在 Java 中传递带有异常的整数

java - 在 Android 中,为什么不应该将 Bitmap 放入 Application 类中?

java - 如何在 Java 或 Groovy 中对时间字符串列表进行排序

animation - 动画不透明度并隐藏小部件,使其不可点击

java - 是否可以备份和恢复 HSQLDB 数据库?

java - 在我的 Java 数组分类代码中找不到问题

ios - 按其中一个键内的值对 NSDictionaries 数组进行排序

javascript - Popper js为 Action 菜单添加动画

ios - Cocos2d for iPhone 中高效的逐帧动画