Java 为什么会出现NullPointerException错误?

Java 为什么会出现NullPointerException错误?,java,nullpointerexception,Java,Nullpointerexception,这是我的密码 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 JB

这是我的密码

 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);
    }

} 
import javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
公共类测试扩展了JFrame{
公共测试(){
设置大小(1000600);
}
私有静态JButton[]删除;
私有静态JPanel p=newjpanel();
公共静态void main(字符串[]args){
JFrame t=新测试();
移除=新的JButton[25];
对于(inti=0;i<25;i++){
移除[i]。立根(243,92+30*i,85,20);
}
t、 setVisible(真);
}
} 

我创建了一个由25个按钮组成的数组,但为什么它仍然抛出这个错误:S?

使用这个
remove=new JButton[25]
您只需创建一个具有25个项目容量的
按钮数组,但您的数组是空的。因此,您必须首先创建新的
按钮
,然后可以为每个按钮设置
设置设置边界(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);
}
remove=newjbutton[25];

对于(int i=0;i使用此
remove=new JButton[25]
您只需创建具有25项容量的
按钮数组,但您的数组是空的。因此,您必须首先创建新的
按钮
,然后可以为每个按钮设置
设置边界(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);
}
remove=newjbutton[25];
对于(int i=0;i在您的行中:

remove = new JButton[25];
您正在为JButton对象创建一个包含25个插槽的数组。现在必须创建要放入数组中的每个JButton

for(int i= 0; i < 25; i++) {
   remove[i] = new JButton();
}
for(int i=0;i<25;i++){
移除[i]=新的JButton();
}
之后,当您尝试访问数组元素时,您将直接访问以前创建的JButton之一

在此之前,您创建的数组只包含null元素,当您尝试访问其中一个数组插槽时,就好像您试图请求null引用执行某项操作,这是不可能的,这就是为什么您的行中会出现
NullPointerException

remove = new JButton[25];
您正在为JButton对象创建一个包含25个插槽的数组。现在必须创建要放入数组中的每个JButton

for(int i= 0; i < 25; i++) {
   remove[i] = new JButton();
}
for(int i=0;i<25;i++){
移除[i]=新的JButton();
}
之后,当您尝试访问数组元素时,您将直接访问以前创建的JButton之一


在此之前,您创建的数组只包含null元素,当您尝试访问其中一个数组插槽时,就好像您试图请求null引用执行某些操作一样,这是不可能的,这就是为什么您会得到
NullPointerException

所有未初始化为指向堆上对象的引用都是无效的设置为空

试试这个:

    // 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);
    }
//听说过“神奇数字”吗?这些确实很糟糕。
//您的代码段已加载它们。
移除=新的JButton[25];

对于(int i=0;i,所有未初始化为指向堆上对象的引用都设置为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);
    }
//听说过“神奇数字”吗?这些确实很糟糕。
//您的代码段已加载它们。
移除=新的JButton[25];

for(int i=0;i因为您实际上没有任何按钮。因为您实际上没有任何按钮。因此,这引出了下一个问题…我已经将其设置为可见,但仍然看不到任何按钮:((我的代码有什么问题吗:再次感谢!@user1447864在for循环中,调用
t.add(删除[i]))
。是的,我刚刚注意到非常感谢,我太愚蠢和粗心了:((面板不是必需的,因为JFrame中已经包含了一个,但是您需要设置框架的布局管理器,并将按钮添加到框架中。因此,这引出了下一个问题……我已经将其设置为可见,但仍然看不到任何按钮:((如果我的代码有什么问题吗?):S再次感谢!@user1447864在你的for循环中,调用
t.add(remove[i])
。是的,我刚刚注意到非常感谢我太愚蠢和粗心了:(((面板不是必需的,因为一个已经包含在JFrame中,但是您需要设置框架的布局管理器,并将按钮添加到框架中。