我尝试创建一个窗口,但我收到以下错误 线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:6 在CreateProject.Window.main(Window.java:20) 在这里输入代码
public static void main(String[] args) {
JFrame frame = new JFrame("gtrged");
JLabel[] labels=new JLabel[6];
for (int i=0;i<10;i++)
{
labels[i]=new JLabel("Column" + i);
}
JTextField[] txt = new JTextField[3];
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints cst = new GridBagConstraints();
JScrollBar vbar=new JScrollBar(JScrollBar.VERTICAL, 30, 40, 0, 500);
int f=0;
for(int i =0 ; i<6 ;i++)
{
cst.fill = GridBagConstraints.HORIZONTAL;
cst.gridx = 0;
cst.gridy = f;//
cst.gridwidth = 2;
panel.add(labels[i],cst);
for(int j=0 ; j<3 ; j++)
{ f=f+1;
int ks=0;
cst.fill = GridBagConstraints.HORIZONTAL;
cst.gridx = 0;
cst.gridy = f;//
cst.gridwidth = 2;
panel.add(txt[ks],cst);
ks++;
}
f=f+1;
}
frame.getContentPane().add(vbar, BorderLayout.EAST);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1300,700);
frame.getContentPane().add(panel);
frame.setVisible(true);
}
答案 0 :(得分:1)
在这段代码中,您尝试设置10个标签,但只创建一个大小为6的数组,因此无法创建额外的标签。
for (int i=0;i<10;i++)
{
labels[i]=new JLabel("Column" + i);
}
仔细查看错误消息,它会告诉您到底出了什么问题,以及在哪一行 - 学习正确读取这些内容将为您节省数小时的麻烦。
答案 1 :(得分:1)
这是您的代码
for (int i=0;i<10;i++)
{
labels[i]=new JLabel("Column" + i);
}
你经历了10次。您的数组仅被声明为六个
JLabel[] labels=new JLabel[6];
答案 2 :(得分:0)
for (int i=0;i<10;i++)
您必须将其更改为
for(int i = 0; i < 6; i++)
或者您必须更改数组
JLabel[] labels=new JLabel[10];
问题是:它尝试访问空内存位置 以下链接可能有所帮助。
答案 3 :(得分:0)
数组labels
的大小为6,但是你尝试从0迭代到9,所以当你labels[6]
抛出异常时。
JLabel[] labels=new JLabel[6];
for (int i=0;i<10;i++) {
labels[i]=new JLabel("Column" + i); // this will throw an exception when i == 6
}
尽可能尝试使用数组长度:
for (int i = 0; i < labels.length; i++) {
labels[i] = new JLabel("Column" + i);
}
这有助于防止可能的ArrayIndexOutOfBoundsException
。