我研究过这个错误,似乎无法找到解决方案.我正在尝试创建一个包含40列和20行的800 JButtons网格.这将最终用于控制我正在制作的多米诺设置机器人将提示多米诺骨牌.我已经使用GridLayout成功创建了一个网格,但是由于项目的性质,我希望每一行都能被半个按钮偏移.我的意思是如何设置计算机键盘上的键.(我本来会添加一张有用的图片,说明我要解释的内容,但显然无法解释事物的初学者不允许添加图片,无论如何).
我尝试通过创建一个包含20个面板的JPanel数组来完成此操作.然后我在面板上添加了40个JButtons.然后我使用GridBagConstraints来抵消每隔一行.我读到你不应该混合awt和swing这样可能是问题,但我不知道.这是代码,我从youtube教程中找到了这个,因为我是一个非常初学者.如果我说的话没有意义,请原谅我.码:
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
public class OffsetGrid {
public static void main (String [] args){
JFrame Frame = new JFrame();
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout grid= new GridLayout();
GridBagConstraints gbca= new GridBagConstraints();
GridBagConstraints gbcb= new GridBagConstraints();
JPanel[] panel=new JPanel[20];
for (int row=0;row<20; row++){
panel[row]=new JPanel(new GridBagLayout());
gbca.gridx=1;
gbca.gridy=row;
gbcb.gridx=0;
gbcb.gridy=row;
for (int y=0; y<40;y++){
grid=new GridLayout(1,40);
panel[row].setLayout(grid);
JButton[] button = new JButton[40];
button[y]=new JButton();
button[y].setOpaque(true);
panel[row].add(button[y]);
}
if (row%2==0){
Frame.add(panel[row], gbcb);
} …Run Code Online (Sandbox Code Playgroud)