2014-04-14 32 views
2

我有一個將旋轉對象放在VBox中的程序。 我希望VBox根據旋轉調整它的垂直尺寸。在下面的例子中,文本對象不應該接觸:VBox(或HBox)中的旋轉對象

enter image description here

但他們做的。 產生該代碼是下面:

package metcarob.com.soavisualise; 

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.layout.StackPane; 
import javafx.scene.layout.VBox; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 

public class TestAppForRotate extends Application { 

@Override 
public void start(final Stage primaryStage) throws Exception { 

    Group root = new Group(); 
    Scene scene = new Scene(root); 

    primaryStage.setScene(scene); 

    VBox vbox = new VBox(); 
    root.getChildren().add(vbox); 

    Group g = null; 
    Text t = null; 
    StackPane p = null; 

    for (int c=0;c<3;c++) { 
     g = new Group(); 
     t = new Text("Test " + Integer.toString(c)); 
     p = new StackPane(); 
     p.getChildren().add(t); 
     p.setStyle("-fx-background-color: white; -fx-border-color: orange; -fx-border-width: 3;"); 
     g.getChildren().add(p); 
     g.setRotate(c * 35); 
     vbox.getChildren().add(g); 
    } 

    primaryStage.show(); 
} 

public static void main(String[] args) { 
    launch(args); 
} 
} 

在這種構造中餘有內部StackPane內部 組整個組被旋轉,並加入到垂直框 (在這個例子中我需要的橙盒旋轉 文本以及文字)

任何想法如何讓這個工作? Robert

回答

2

將您的旋轉節點包裹在未經過旋轉的組中。

vbox.getChildren().add(new Group(g)); 

spacing

這部作品的原因是從Group javadoc

如果變換和效果直接設置在這個組的孩子,那些將被納入本集團的佈局界限。

如果您想要VBox項目之間的額外固定空間,您可以使用 Rohan的答案建議。

0

我認爲最好的辦法是設置間距。

vbox.setSpacing(double arg0); 

如果需要,您還可以調整循環中的間距以獲得一些動態效果。