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

时间:2017-03-24 07:07:49

标签: java sorting animation javafx

我正在使用javaFX实现合并排序动画。我想使用绝对坐标来移动形状。我使用setToX()的{​​{1}}和setToY()。但是,这些形状位于具有固定间距的HBox中。我尝试将它们移动到不同的地方,但它不起作用。 Translatetransition()setToX()使用HBox作为参考。形状始终具有固定的间距,并且形状的顺序不会改变。我使用setToY()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;

}

1 个答案:

答案 0 :(得分:0)

请使用组或窗格作为容器而不是Hbox。 HBox有布局政策,它不支持绝对坐标。