我正在使用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;
}
答案 0 :(得分:0)
请使用组或窗格作为容器而不是Hbox。 HBox有布局政策,它不支持绝对坐标。