Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GridPane中间部分问题_Java_User Interface_Javafx_Javafx 8 - Fatal编程技术网

Java GridPane中间部分问题

Java GridPane中间部分问题,java,user-interface,javafx,javafx-8,Java,User Interface,Javafx,Javafx 8,我正在尝试使用GridPane创建登录UI。我的窗口以300 x 300打开&我已将行和列索引设置为某些值,以便我的文本“用户ID”和“密码”都显示在窗口的中心(与所有四个边的距离相等)。看起来是这样的 问题发生在我最大化窗口时,这两个字段(用户ID和密码)不再位于最大化窗口的中心&这导致 我曾尝试将网格窗格放置在边框窗格的中心,但没有成功。我如何使这两个人始终保持他们的立场 以下是代码: void tryGridPaneFunc() { main.setTitle("GridPane T

我正在尝试使用GridPane创建登录UI。我的窗口以300 x 300打开&我已将行和列索引设置为某些值,以便我的文本“用户ID”和“密码”都显示在窗口的中心(与所有四个边的距离相等)。看起来是这样的

问题发生在我最大化窗口时,这两个字段(用户ID和密码)不再位于最大化窗口的中心&这导致

我曾尝试将网格窗格放置在边框窗格的中心,但没有成功。我如何使这两个人始终保持他们的立场

以下是代码:

void tryGridPaneFunc()
{
 main.setTitle("GridPane Try");
 BorderPane root = new BorderPane();
 GridPane grid = new GridPane();
 Text usr = new Text("USER ID:");
 Text pwd = new Text("PASSWORD:");

 grid.add(usr, 18,20);
 grid.add(pwd, 18, 21);
 grid.setHgap(10);
 grid.setVgap(10);
 grid.setPadding(new Insets(20));
 //grid.setGridLinesVisible(true);


 HBox empty1 = new HBox();
 empty1.setPadding(new Insets(40));
 HBox empty2 = new HBox();
 empty2.setPadding(new Insets(40));
 HBox empty3 = new HBox();
 empty3.setPadding(new Insets(40));
 HBox empty4 = new HBox();
 empty4.setPadding(new Insets(40));


 empty1.setHgrow(empty1, Priority.ALWAYS);
 empty2.setHgrow(empty1, Priority.ALWAYS);
 empty3.setHgrow(empty1, Priority.ALWAYS);
 empty4.setHgrow(empty1, Priority.ALWAYS);


 root.setTop(empty1);
 root.setBottom(empty2);
 root.setLeft(empty3);
 root.setRight(empty4);

 root.setCenter(grid);

 Scene msc = new Scene(root,500,500);

 main.setScene(msc);

 main.show();
}
我很抱歉,如果这样的帖子已经存在。我搜索时他们没有出现。因此,如果您发现任何问题,请提供指向它的链接


感谢您的宝贵时间。

无需在网格窗格中添加空区域并使用空行和空列<代码>网格窗格具有用于设置“网格窗格宽度和高度内的网格对齐方式”的设置。所以这里您只需要
grid.setAlignment(Pos.CENTER)

SSCCE:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class CenteredGridPane extends Application {

    @Override
    public void start(Stage main) {
        main.setTitle("GridPane Try");
        GridPane grid = new GridPane();
        Text usr = new Text("USER ID:");
        Text pwd = new Text("PASSWORD:");

        grid.add(usr, 0, 0);
        grid.add(pwd, 0, 1);
        grid.setHgap(10);
        grid.setVgap(10);

        grid.setAlignment(Pos.CENTER);

        Scene msc = new Scene(grid,500,500);

        main.setScene(msc);

        main.show();
    }

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