在for循环中,我想


初始化JButtons [] bts。
将按钮添加到面板pan3中。
向每个JButton添加一个ActionListener。


这是我到目前为止所拥有的:

for(int i = 0 ;i < bts1.length ; i++){
        bts1[i] = new JButton(""+i);
        pan3.add(bts1[i]);
        //The NullPointerException happens after this line .
        bts[i].addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae){
                int j = 0 ;
                screen.setText(screen.getText()+bts[j].getText());
                j++;
            }
        });
    }


我的问题是如何解决NullPointerException?
注意
对于j,我添加了它,因为当我尝试使用i时,会发生编译器错误,

最佳答案

您将JButton初始化为bts1,然后将其称为bts。我认为这是导致错误的原因。
也,

声明int i=0;作为全局作用域,然后声明for(i = 0 ;i < bts1.length ; i++),则可以使用i代替j
否则使用如下:

for(int i = 0 ;i < bts1.length ; i++){
        bts1[i] = new JButton(""+i);
        pan3.add(bts1[i]);
        final int j=i;
        bts1[i].addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae){
                screen.setText(screen.getText()+bts1[j].getText());
            }
        });
    }

07-24 22:10