gpt4 book ai didi

java - 为什么我收到 java.lang.ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 07:25:41 27 4
gpt4 key购买 nike

基本上,我尝试通过向下制作 12 行,每行 12 个按钮来制作一个包含 144 个按钮 (12x12) 的网格。

但是,当我尝试运行时,出现此错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at progrid.me.myname.grid.ProGrid.main(ProGrid.java:23)

代码如下:

package progrid.me.myname.grid;

import javax.swing.*;

public class ProGrid extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;

public static void main(String[] arguments) {
JFrame frame = new JFrame(); //Create the frame
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("My ProGrid remake");
frame.setSize(300, 300);

JPanel[] row = new JPanel[12];
for(int i = 0; i < 12; i++){
frame.add(row[i]);
row[i].setBounds(0, i*25, 300, 25);
row[i].setVisible(true);


for(int j = 0; i < 12; i++){
JButton[] button = new JButton[j]; //Make 12 new JButtons (button[0] - button[12]) for each row
row[i].add(button[j]);
button[j].setBounds(i*25, 0, 25, 25);
button[j].setVisible(true);


}
}

}

}

第 23 行是这样的:

frame.add(row[i]);

这可能意味着这也不起作用:

row[i].add(button[j]);

那么有人可以在正确的方向上插入我吗?我并不是要求你向我扔代码,我实际上是在努力学习。但一些帮助会很棒。谢谢!

编辑修复了第一个问题,现在我在行frame.add(row[i]);上遇到了java.lang.NullPointerException嗯>

最佳答案

问题:

JPanel[] row = new JPanel[i];

您在循环的每次迭代中创建一个由 JPanelJButton 组成的新数组,这会在第一次迭代时导致 ArrayIndexOutOfBoundsException执行 JPanel[] row = new JPanel[0]; 时的 i=0 循环frames.add(row[0]);

解决方案:

对于这两个数组,仅在循环外创建该数组的一个实例,并在循环的每次迭代中更新该实例。以下是 JPanel 数组的示例:

JPanel[] row = new JPanel[12]; //Make 12 new JPanels (row[0] - row[12])
for(int i = 0; i < row.length; i++){
frame.add(row[i]);
row[i].setBounds(0, i*25, 300, 25);
row[i].setVisible(true);

编辑:

JPanel[] row = new JPanel[12];
for (int i = 0; i < 12; i++) {
row[i] = new JPanel();
frame.add(row[i]);
row[i].setBounds(0, i * 25, 300, 25);
row[i].setVisible(true);

JButton[] button = new JButton[12];
for (int j = 0; i < 12; i++) {
button[j] = new JButton();
row[i].add(button[j]);
button[j].setBounds(i * 25, 0, 25, 25);
button[j].setVisible(true);

}
}

关于java - 为什么我收到 java.lang.ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25299485/

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