gpt4 book ai didi

java - GridPane 未居中对齐

转载 作者:行者123 更新时间:2023-12-02 02:00:45 26 4
gpt4 key购买 nike

我正在使用数字键盘制作登录屏幕,但我似乎无法将 Pane 中按钮的网格 Pane 居中对齐。我做错了什么?

Main.java

import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.input.KeyCombination;
import javafx.stage.Screen;
import javafx.stage.Stage;

public class Main extends Application {

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

public void start(Stage primaryStage) throws Exception{

Rectangle2D bounds = Screen.getPrimary().getBounds();
LoginScreen loginScreen = new LoginScreen(bounds.getWidth(), bounds.getHeight());

Scene scene = new Scene(loginScreen.get());

primaryStage.setScene(scene);
primaryStage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
primaryStage.show();
primaryStage.setFullScreen(true);
}
}

LoginScreen.java

import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;

public class LoginScreen {
private Pane root;
private GridPane numberPad;

public LoginScreen(double screenWidth, double screenHeight){
root = new Pane();
root.setPrefSize(screenWidth, screenHeight);
root.setBackground(new Background(new BackgroundFill(Color.AQUA, CornerRadii.EMPTY, Insets.EMPTY)));

numberPad = new GridPane();

Button button01 = new Button("1");
Button button02 = new Button("2");
Button button03 = new Button("3");
Button button04 = new Button("4");
Button button05 = new Button("5");
Button button06 = new Button("6");
Button button07 = new Button("7");
Button button08 = new Button("8");
Button button09 = new Button("9");

numberPad.setAlignment(Pos.CENTER);

numberPad.add(button01, 0, 0);
numberPad.add(button02, 1, 0);
numberPad.add(button03, 2, 0);
numberPad.add(button04, 0, 1);
numberPad.add(button05, 1, 1);
numberPad.add(button06, 2, 1);
numberPad.add(button07, 0, 2);
numberPad.add(button08, 1, 2);
numberPad.add(button09, 2, 2);

root.getChildren().addAll(numberPad);

}

public Pane get(){
return root;
}
}

GUI 代码很冗长,这个帖子编辑器不允许我按原样发布我的问题,所以我需要这些额外的行来让它接受我的问题。如果我认为我可以将代码缩减为仅 numberPad.setAlignment(Pos.Center) 并且仍然清楚地表明我如何尝试将 GridPane 居中,我肯定会这样做。我衷心感谢那些愿意花时间帮助我解决这个问题的人。

编辑01:

我的问题是 GridPane 本身绘制在屏幕的左上角而不是屏幕的中心。

最佳答案

您需要实际设置父容器的对齐方式。然而,Pane 并不是执行此操作的有效容器。

如果您要使用VBox,则只需将其对齐设置如下:

VBox root = new VBox(10);
root.setAlignment(Pos.CENTER);

这将导致 VBox 的所有子项被放置在中心。

Pos 枚举还提供其他定位方法,包括 TOP_CENTERTOP_LEFTBOTTOM_RIGHT,用于示例。

关于java - GridPane 未居中对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51623482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com