【问题标题】:Java GridPane mid section issueJava GridPane 中段问题
【发布时间】:2016-04-26 20:28:57
【问题描述】:

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

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

我尝试将 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();
}

如果此类帖子已经存在,我很抱歉。我搜索时他们没有出现。因此,如果您发现任何内容,请提供指向它的链接。

感谢您宝贵的时间。

【问题讨论】:

    标签: java user-interface javafx javafx-8


    【解决方案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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多