gpt4 book ai didi

java - 如何在没有布局的情况下将按钮添加到新行?

转载 作者:行者123 更新时间:2023-12-02 05:33:03 25 4
gpt4 key购买 nike

这是我的第一个 GUI 项目,所以如果这是一个愚蠢的问题,请原谅我。我应该向面板添加 25 个按钮,分成 5 行,每行 5 个按钮。它必须像 5X5 矩阵。但我不能在这个项目中使用布局。所以我必须在没有布局的情况下执行此操作。

这是我添加按钮的代码:

for(int i=0;i<25;i++)
{
b=new JButton();
b.setLocation(0, 0);
b.setPreferredSize(new Dimension(40, 40));
b.setEnabled(true);
panel.add(b);
}

最佳答案

EDIT: Updated to a working MCVE

最简单的方法是使用两个嵌套的 for 循环分别处理行和列。这是在下面示例中的 addButtonsA 方法中完成的。

或者,您可以从循环变量(从 0 到 25)计算当前行和列,就像在 addButtonsB 方法中完成的那样。

请注意,无论如何,当您使用布局管理器时,您必须通过调用 setSize 来指定按钮的大小. (通常,当您使用布局管理器时,必须使用 setPreferredSize,但在本例中不需要)。

示例:

import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class ManualButtonGrid
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
createAndShowGUI();
}
});
}

private static void createAndShowGUI()
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();
panel.setLayout(null);

int numRows = 5;
int numCols = 5;

//addButtonsA(panel, numRows, numCols);
addButtonsB(panel, numRows, numCols);

f.getContentPane().add(panel);
f.setSize(500,500);
f.setLocationRelativeTo(null);
f.setVisible(true);
}

private static void addButtonsA(JPanel panel, int numRows, int numCols)
{
int size = 60;
for (int r = 0; r < numRows; r++)
{
for (int c = 0; c < numCols; c++)
{
JButton b = new JButton(String.valueOf(r*numCols+c));
b.setLocation(c*size, r*size);
b.setSize(new Dimension(size, size));
panel.add(b);
}
}
}

private static void addButtonsB(JPanel panel, int numRows, int numCols)
{
int size = 60;
for (int i = 0; i < 25; i++)
{
JButton b = new JButton(String.valueOf(i));
int r = i / numCols;
int c = i % numCols;
b.setLocation(c*size, r*size);
b.setSize(new Dimension(size, size));
panel.add(b);
}
}

}

关于java - 如何在没有布局的情况下将按钮添加到新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343252/

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