这是我的代码......
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class test extends JFrame {
public test() {
setSize(1000,600);
}
private static JButton[] remove;
private static JPanel p = new JPanel();
public static void main(String[]args){
JFrame t = new test();
remove = new JButton[25];
for (int i = 0; i < 25; i++) {
remove[i].setBounds(243, 92 + 30 * i, 85, 20);
}
t.setVisible(true);
}
}
我创建了一个由25个按钮组成的数组,但为什么它仍然抛出这个错误:S?
答案 0 :(得分:4)
在你的行中:
remove = new JButton[25];
您正在创建一个包含25个JButton对象插槽的数组。您现在必须创建要放入数组的每个JButton。
for(int i= 0; i < 25; i++) {
remove[i] = new JButton();
}
之后,当您尝试访问数组元素时,您将直接访问以前创建的JButtons之一。
在此之前,您创建的数组只包含null元素,当您尝试访问其中一个数组插槽时,就像您尝试请求空引用执行某些操作一样,这是不可能的,这就是为什么您得到一个NullPointerException
。
答案 1 :(得分:1)
使用此remove = new JButton[25]
,您只需创建具有25个项目容量的buttons-array
,但您的数组为空。因此,您必须先创建新的Button
,然后才能为每个setBounds(243, 92 + 30 * i, 85, 20)
设置remove = new JButton[25];
for(int i=0;i<25;i++){
remove[i] = new JButton();
remove[i].setBounds(243,92+30*i,85,20);
}
。
{{1}}
答案 2 :(得分:0)
所有未初始化为指向堆上对象的引用都设置为null。
试试这个:
// Ever heard of "magic numbers"? These are very bad, indeed.
// Your snippet is loaded with them.
remove = new JButton[25];
for(int i=0;i<25;i++){
remove[i] = new JButton();
remove[i].setBounds(243,92+30*i,85,20);
}