java - 无法使用 JavaFX 将网格居中

标签 java eclipse javafx gridpane

我正在使用 grid.setAlignment(Pos.CENTER); 将网格在 JavaFX 场景中居中,但它似乎不起作用。无论我给它什么位置,网格始终显示在场景的左上角。谁能看出我做错了什么吗?

我的整个代码(减去导入)如下:

*public class Main extends Application {
@Override
public void start(Stage stage) throws Exception {
Scene scene = new Scene(new Group(), 450, 250);

Button btn = new Button();
btn.setText("Run");


final ComboBox comboBox = new ComboBox();
comboBox.getItems().addAll(
"Phase 1",
"Phase 2",
"Phase 3",
"Phase 4",
"Phase 5"  
);

GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setVgap(10);
grid.setHgap(10);
grid.setPadding(new Insets(5, 5, 5, 5));
grid.add(new Label("Select Phase: "), 0, 0);
grid.add(comboBox, 1, 0);
grid.add(new Label("Select Data: "), 0, 1);
grid.add(btn, 0, 2);

Group root = (Group)scene.getRoot();
root.getChildren().add(grid);
stage.setScene(scene);


stage.show();
}*

谢谢!

最佳答案

这不是 grid.setAlignment(...) 的作用:它在网格 Pane 的边界内对齐网格 Pane 的整体内容(请参阅 docs )。

网格 Pane 在其父级中的位置由其父级确定。如果您希望它居中,请使用知道如何居中的父级,例如 StackPane:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage stage) throws Exception {

        StackPane root = new StackPane();

        Scene scene = new Scene(root, 450, 250);

        Button btn = new Button();
        btn.setText("Run");

        final ComboBox<String> comboBox = new ComboBox<>();
        comboBox.getItems().addAll("Phase 1", "Phase 2", "Phase 3", "Phase 4", "Phase 5");

        GridPane grid = new GridPane();

        grid.setVgap(10);
        grid.setHgap(10);
        grid.setPadding(new Insets(5, 5, 5, 5));
        grid.add(new Label("Select Phase: "), 0, 0);
        grid.add(comboBox, 1, 0);
        grid.add(new Label("Select Data: "), 0, 1);
        grid.add(btn, 0, 2);


        root.getChildren().add(grid);
        stage.setScene(scene);

        stage.show();
    }

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

关于java - 无法使用 JavaFX 将网格居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41007690/

相关文章:

android - 如何增加在移动设备上看到的密码字段文本?

java - 组合框相同项目选定的操作监听器

Java按破折号分割

java - 多任务: parse space-separated integers from a string

java - 导入使用什么 jar 文件?

java - Main.this 修复此问题时遇到问题

java - 在 Eclipse 中使用可运行的 Jar 文件时出现 FileNotFoundException 错误

java - 如何通过 CSS 添加外部图像

java - 如何在java中声明一个数值变量,该变量始终保存固定长度为3位的数字值。

java - allowUnsafeRenegotiation,但仍然是 CertificateException