0

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 を使用しようとするとコンパイル エラーが発生するため、追加します。

4

5 に答える 5

1

代わりにイベント ソースを試してください

screen.setText(screen.getText()+((JButton)ae.getSource()).getText());
于 2013-11-01T07:07:48.537 に答える
0
try this:
for(int i = 0 ;i < bts1.length-1 ; i++){
   //rest of your code
}

10 個の要素の配列には、0 ~ 10 ではなく、0 ~ 9 のインデックスを持つ要素があるためです。

于 2013-11-01T06:54:37.003 に答える
0

ボタンをパネルに追加する前に。最初にボタンのリスナーを追加する必要があります。

最初に次のコードを試してください。

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

    **pan3.add(bts1[i]);**
于 2013-11-01T06:54:43.410 に答える