2017-03-24 3 views
1

javaFXを使用してマージソートアニメーションを実装しています。私は絶対座標を使用して図形を移動したい。私はsetToX()setToY()Translatetransition()としています。しかし、これらの形状は固定間隔のHBoxにあります。私はそれらを別の場所に移動しようとしますが、動作しません。 setToX()およびsetToY()はHBoxを参考にしています。図形は常に一定の間隔で表示され、図形の順序は変化しません。私は絶対座標を得るためにgetLayoutX()getLayoutY()を使用します。誰が私を助けられるか??javaFX:translatetransitionを使用して絶対座標で図形を移動する

これらは、コードに関連している:

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); 

これは、この代わりにコンテナとしてグループまたはペインを使用して絶対座標を

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); 
    } 

答えて

0

Plsのを保存することである

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; 

} 

tranlation関数でありますHboxのHBoxはレイアウトアウトポリシーを持ち、絶対座標をサポートしていません。

+0

グループを使用して形状間のギャップを設定するにはどうすればよいですか? @truejasonxiefans – happyeveryday

+1

それは絶対的なcooridateにあるので。 2つの図形が重なっていれば、重なり合います。それは自分でコントロールを意味します。形状のサイズと位置を注意深く計算する必要があります。 – truejasonxiefans

関連する問題