JavaFX,can';t使GridPane与BorderPane的中心对齐
我正在开发一个数独应用程序,但我遇到了一个阻碍我进步的问题。我想做的是制作这个我用循环创建的数独板,它在StackPane中添加一个标签,StackPane进入GridPane的指定位置。所以我试图强迫这块板有一个固定的尺寸,并且不能超过这个值 我花了一整晚的时间研究和尝试不同的东西,例如把网格窗格放进一个锚面板,并试图把锚面板放在BorderPane的中心,但是当你在数独板上使用太多的行和列时,锚面板似乎总是超出了窗口之外 我想做的是为所有的电路板设定一个尺寸,所以如果需要,它会拉伸到那个点,或者如果需要,它会收缩。附图是用一个边框,中间放了一个格栅。您可以看到,16x16非常适合,而25x25正好放在窗外 非常感谢您的帮助 尝试创建25x25时窗口外观的图片 尝试创建16x16时窗口外观的图片。 这也是使用插图,以推动它更向顶部,所以它看起来不太不合适JavaFX,can';t使GridPane与BorderPane的中心对齐,java,javafx,gridpane,borderpane,Java,Javafx,Gridpane,Borderpane,我正在开发一个数独应用程序,但我遇到了一个阻碍我进步的问题。我想做的是制作这个我用循环创建的数独板,它在StackPane中添加一个标签,StackPane进入GridPane的指定位置。所以我试图强迫这块板有一个固定的尺寸,并且不能超过这个值 我花了一整晚的时间研究和尝试不同的东西,例如把网格窗格放进一个锚面板,并试图把锚面板放在BorderPane的中心,但是当你在数独板上使用太多的行和列时,锚面板似乎总是超出了窗口之外 我想做的是为所有的电路板设定一个尺寸,所以如果需要,它会拉伸到那个点,
您所要做的就是设置网格约束以满足您的需要。为此,将
标签
放入网格行
(无需堆叠窗格
),并将其有效期和有效期设置为居中。然后将标签的vGrow和hGrow设置为优先级。始终
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
GridPane gridPane = createMainGrid(2, 2);
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(10);
gridPane.setVgap(10);
Scene scene = new Scene(gridPane);
primaryStage.setScene(scene);
primaryStage.show();
}
private GridPane createMainGrid(int rows, int columns) {
GridPane grid = new GridPane();
for (int colIdx = 0; colIdx < columns; colIdx++) {
for (int rowIdx = 0; rowIdx < rows; rowIdx++) {
GridPane innerGrid = createGrid(4, 4);
grid.add(innerGrid, colIdx, rowIdx);
GridPane.setConstraints(innerGrid, colIdx, rowIdx, 1, 1, HPos.CENTER, VPos.CENTER, Priority.ALWAYS, Priority.ALWAYS);
}
}
return grid;
}
private GridPane createGrid(int rows, int columns) {
GridPane grid = new GridPane();
Random random = new Random();
for (int colIdx = 0; colIdx < columns; colIdx++) {
for (int rowIdx = 0; rowIdx < rows; rowIdx++) {
Label label = new Label(String.valueOf(random.nextInt(rows * columns)));
label.setMinSize(30, 30);
label.setAlignment(Pos.CENTER);
grid.add(label, colIdx, rowIdx);
GridPane.setConstraints(label, colIdx, rowIdx, 1, 1, HPos.CENTER, VPos.CENTER, Priority.ALWAYS, Priority.ALWAYS);
}
}
return grid;
}
public static void main(String[] args) {
launch(args);
}
}
public类主扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
GridPane GridPane=createMainGrid(2,2);
网格窗格。设置对齐(位置中心);
网格窗格。setHgap(10);
gridPane.setVgap(10);
场景=新场景(网格窗格);
初级阶段。场景(场景);
primaryStage.show();
}
私有网格窗格createMainGrid(int行、int列){
GridPane grid=新建GridPane();
对于(int colIdx=0;colIdx