gpt4 book ai didi

Java 如果所有列都填满网格,则移动到新行

转载 作者:行者123 更新时间:2023-12-01 11:29:17 24 4
gpt4 key购买 nike

我正在尝试创建动态创建的按钮列表。我使用 GridLayout 来排列它们。我希望,如果按钮数量超过特定数字(例如 12),则该行必须更改,即每行将有 12 个按钮。

    String[] linesArray = lines.toArray(new String[DataCount]);

setLayout(new java.awt.GridLayout(4, 4));
for (int i = 0; i < DataCount; i++) {
GridBagConstraints c = new GridBagConstraints();
jPanel1.setLayout(new GridBagLayout());

c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0;
//c.weighty = 1;
c.gridx = 0;
if(i > 12)
c.gridy = 1;

buttons[i] = new JButton(linesArray[i]);
buttons[i].setName("iname"+i);
buttons[i].setPreferredSize(new Dimension(100, 80));
jPanel1.add(buttons[i], c);

jPanel1.setBackground(Color.WHITE);
jPanel1.setBorder(BorderFactory.createMatteBorder(0,0,1,0,Color.BLACK));

}

如何实现上述任务?

最佳答案

您似乎事先知道要创建多少个按钮,因为您循环遍历 dataCount 变量并在每次迭代中创建一个新按钮。

现在您将使用以下构造函数创建网格布局:

new java.awt.GridLayout(rows, cols)

你正在创建它 4x4。因此,当您创建它时,只需检查一下您要创建多少列即可。例如:

int cols = dataCount > 12 ? dataCount / 12 : dataCount / 4;
int rows = (int)Math.ceil(dataCount / cols);

setLayout(new java.awt.GridLayout(rows, cols));

您可能需要检查 Math.ceil 的微调,以确保获得足够的行和列来包含数据。

希望这有帮助。

关于Java 如果所有列都填满网格,则移动到新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554189/

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