簡體   English   中英

Javafx GridPane,如何居中居中? (文本/標簽)

[英]Javafx GridPane, how to center Node? (Text/Label)

我正在嘗試上一門課程學習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;
}

我也嘗試過以下發布的解決方案: GridPane中Label的JavaFX對齊

我是否需要將此Label節點放入容器中以使其在GridPane中居中? 像HBox還是VBox?

您的代碼實際上沒有錯。 該“Recommendify”文本其細胞中心。 但是,單元格的寬度不超過文本本身。

您可以通過在createGridPane()方法中打開網格線來查看此信息:

grid.setGridLinesVisible(true);

截圖


要測試對齊方式,可以將ColumnConstraints添加到GridPane

grid.getColumnConstraints().add(new ColumnConstraints(150));

上面的語句將第一列的首選寬度設置為150 這是新結果:

屏幕截圖2

如您所見,“ Text節點正確居中。

編輯: 請記住,如果要使Text在添加到第二行的Separator上居中,則還需要使其跨3列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM