Java FX更改组件的Halignment

时间:2016-11-27 21:12:02

标签: java javafx java-8 alignment fxml

public CheckBox createBox(){
    CheckBox box = new CheckBox();
    box.setText(name);
    box.setOnMouseClicked(x -> handlePlaying(box));
    return box;
}

而不是将它们添加到GridPane

checkBoxes
            .forEach(x -> gridPane.add(x, checkBoxes.indexOf(x) + 1, 2));

现在我想更改Halignment,但我无法找到该方法。

PS:我想改变Halignement而不是一般的Alignement;

1 个答案:

答案 0 :(得分:0)

我相信这个例子说明了Labelled.setAlignment()和GridPane.setHAlignment()之间的区别。

alignment

代码

@Override
public void start(Stage primaryStage) throws Exception {
    GridPane grid = new GridPane();
    CheckBox box1 = new CheckBox("horse");
    box1.setMinWidth(200);
    box1.setAlignment(Pos.CENTER_RIGHT);
    grid.getChildren().add(box1);
    CheckBox box2 = new CheckBox("banana");
    grid.getChildren().add(box2);
    GridPane.setRowIndex(box2, 1);
    GridPane.setHalignment(box2, HPos.RIGHT);   // <=== this is probably what you want
    primaryStage.setScene(new Scene(grid));
    primaryStage.show();
}

我推荐使用FXML而不是程序化布局,但同样适用原则。在SceneBuilder中的Layout选项卡中找到HAlignment属性...

Labelled.setAlignment()确实在JavaDoc中解释了这一点,虽然我可以看出为什么这可能会让人感到困惑。

  

指定Labeled中的文本和图形应该如何   当Labeled中有空的空格时对齐。