我正在尝试学习我要参加的课程的Javafx。从HTML + ERB模板过渡到Javafx框架时遇到很多困难(我是Rails开发人员)。
由于某种原因,我无法将Label节点居中于网格窗格中。这是我的start
方法:
@Override
public void start(Stage stage) throws Exception {
GridPane root = new GridPane();
FlowPane leftbanner = new FlowPane();
leftbanner.setPrefWidth(200);
String bgStyle = "-fx-background-color: lightblue;"
+ "-fx-background-radius: 0%;"
+ "-fx-background-inset: 5px;";
leftbanner.setStyle(bgStyle);
root.add(leftbanner, 0, 0, 1, 1);
root.add(createGridPane(), 1, 0, 1, 1);
Scene scene = new Scene(root, 700, 500);
stage.setTitle("Recommendify");
stage.setScene(scene);
stage.show();
}
我正在使用createGridPane
方法来构建我的应用程序。这是该方法的内容,其中包括我尝试将标签居中的位置
public GridPane createGridPane() {
GridPane grid = new GridPane();
grid.setPadding(new Insets(10));
grid.setHgap(10);
grid.setVgap(10);
Text txt = new Text("Recommendify");
txt.setFont(Font.font("Dialog", FontWeight.BOLD, 12));
GridPane.setHalignment(txt, HPos.CENTER);
grid.add(txt, 0, 0, 1, 1);
grid.add(new Separator(), 0, 1, 3, 1);
return grid;
}
我还尝试了以下发布在以下位置的解决方案:JavaFX alignment of Label in GridPane
我是否需要将此Label节点放入容器中以使其在GridPane中居中?像HBox或VBox一样?
答案 0 :(得分:4)
您的代码实际上没有错。 “推荐”文本 位于其单元格的中心。但是,单元格的宽度不超过文本本身。
您可以通过在createGridPane()
方法中打开网格线来看到此信息:
grid.setGridLinesVisible(true);
要测试对齐方式,可以将ColumnConstraints
添加到GridPane
:
grid.getColumnConstraints().add(new ColumnConstraints(150));
上面的语句将第一列的首选宽度设置为150
。这是新结果:
如您所见,Text
节点正确居中。
编辑: 请记住,如果您想让
Text
居于添加到第二行的Separator
上方,则需要有 它也跨越三列。