2016-11-07 330 views
0

我想在GridPane中水平居中一行。我知道如何水平居中一列(root.getColumnConstraints().get(0).setHalignment(HPos.CENTER);),但我找不到行的這種方法。我只能更改列的Halignment屬性和行的Valignment屬性。但我需要的是一行的Halignment,它不存在。那我該怎麼做?在GridPane中水平居中行JAVAFX

This is what I want at the end

+0

[了JavaFx GridPane的可能的複製 - 如何以中心元素](http://stackoverflow.com/questions/12816075/javafx-gridpane-how-to-center-elements) – ItamarG3

回答

0

這是不可能做到這一點上使用約束一整排,但你可以使用GridPane.setHalignment一排,其中優先ColumnConstraints設置所有Node S上的財產。

@Override 
public void start(Stage primaryStage) { 
    Text text00 = new Text("text"); 
    Text text01 = new Text("text"); 
    Text text02 = new Text("text"); 
    Text text10 = new Text("text"); 
    Text text11 = new Text("text"); 
    Text text12 = new Text("text"); 
    GridPane gridPane = new GridPane(); 

    ColumnConstraints cConstraints = new ColumnConstraints(); 
    cConstraints.setHalignment(HPos.LEFT); 
    cConstraints.setHgrow(Priority.ALWAYS); 
    gridPane.getColumnConstraints().addAll(cConstraints, cConstraints); 
    gridPane.addColumn(0, text00, text01, text02); 
    gridPane.addColumn(1, text10, text11, text12); 

    GridPane.setHalignment(text11, HPos.CENTER); 
    GridPane.setHalignment(text01, HPos.CENTER); 

    Scene scene = new Scene(gridPane); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

請注意,您還可以在節點後,做到這一點已經通過孩子迭代添加到GridPane

int alignRow = 1; 
for (Node n : gridPane.getChildren()) { 
    Integer row = GridPane.getRowIndex(n); 
    int rowNumber = row == null ? 0 : rowNumber.intValue(); 
    if (rowNumber = alignRow) { 
     GridPane.setHalignment(n, HPos.CENTER); 
    } 
}