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