gpt4 book ai didi

Java Swing GridBagLayout() 跨越对象 3 行不起作用

转载 作者:行者123 更新时间:2023-12-02 11:38:14 25 4
gpt4 key购买 nike

我有一个 GridBagLayout,每 5 列 5 行。我试图跨越我的第一个对象,它是 3 行和 5 列上的 TilePanel。它部分工作。

我的第 4 行和第 5 行有对象。我预计前 3 行会比第 4 行和第 5 行占用更多的空间。实际上,空间被平均分配到窗口上。我究竟做错了什么?请参阅下面的代码片段和屏幕截图:

setLayout(new GridBagLayout());

GridBagConstraints grid = new GridBagConstraints();


// Initialize all the UI components
tilePanel = new TilePanel(gameModel);

grid.fill = GridBagConstraints.BOTH;

// Grid 5 lines by 5 columns
grid.weightx = 5;
grid.weighty = 5;

// tilePanel takes 3 lines and 5 columns
grid.gridwidth = 5;
grid.gridheight = 3;
grid.gridx = 0;
grid.gridy = 0;
this.add(tilePanel, grid);

// Forth Line
goal = new JLabel("Goal: " + gameModel.getGameResult());
currentSum = new JLabel("Current sum: 0");
nextButton = new JButton("NEXT");
resetButton = new JButton("RESET");

grid.gridwidth = 1;
grid.gridheight = 1;

// Forth Line: First column
grid.gridy = 4;
grid.gridx = 0;
this.add(nextButton, grid);

// Forth Line: Second column
grid.gridx = 1;
this.add(resetButton, grid);


// Firth Line
grid.gridy = 5;

// Firth Line: First column
grid.gridx = 0;
goal.setBorder(new LineBorder(Color.BLACK, 1));
this.add(goal, grid);

// Firth Line: Second column
grid.gridx = 1;
currentSum.setBorder(new LineBorder(Color.BLACK, 1));
this.add(currentSum, grid);

// Firth Line: Third column
grid.gridx = 2;
this.add(new JLabel("TIME"), grid);

// Firth Line: Fourth column
grid.gridx = 3;
this.add(new JLabel("RESET"), grid);

// Firth Line: Fifth column
grid.gridx = 4;
this.add(new JLabel("LEVEL"), grid);

窗口截图:

/image/xngBG.png

最佳答案

I'm trying to span my first object which is a TilePanel on the 3 lines

你不能只说一个组件跨越 3 行。

任何给定行的高度由添加到该行的组件的高度决定。如果您不向线上添加组件,则该线没有高度。

在您的示例中,您添加 gridy 为 0, 4, 5 的组件。因此 gridy 中没有 1, 2, 3 的组件,因此每个组件网格的高度为 0。

只有当每行都有组件时,才可以跨行。因此,如果您添加了 5 个 gridy 为 0、1、2、3、4 的组件,那么您可以添加第 6 个组件(到另一列),其 gridy为 0,gridheight 为 3。那么该组件的高度将等于 gridy 0、1 和 2 中组件的高度。

如果您希望第一行更大,那么也许您可以使用ipady值来为标题面板提供额外的空间。阅读 Swing 教程中关于 How to Use GridBagLayout 的部分有关所有约束和工作示例的更多信息。

关于Java Swing GridBagLayout() 跨越对象 3 行不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48774176/

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