Java GridPane中段问题

时间:2016-01-20 20:03:38

标签: java user-interface javafx javafx-8

我尝试使用GridPane创建登录UI。我的窗口打开300 x 300&我已经设置了行&列索引到某些值,以便我的文本和#34;用户ID" &安培; " PASSWORD"出现在窗口的中心(与所有四边相等的距离)。它看起来像这样

this

当我最大化窗口时出现问题,这两个字段(USER ID& PASSWORD)不再停留在最大化窗口的中心。这导致了这个

enter image description here

我尝试将GridPane放在BorderPane的中心,但没有成功。我如何让这两个人始终保持自己的位置?

这里有以下代码:

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();
}

如果这些帖子已经存在,我很抱歉。当我搜索时,它们并没有显示出来。因此,如果您发现任何问题,请提供链接。

感谢您宝贵的时间。

1 个答案:

答案 0 :(得分:1)

添加空白区域并在网格窗格中使用空行和列不是必需的。 GridPane有一个alignment property用于设置网格窗格宽度和高度内网格的对齐方式。"。所以你需要的只是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);
    }
}