2011-12-13 2 views
0

JButton이 몇 개 있고 for 루프에서 액션 리스너를 추가하려고하지만 null 포인터 예외가 발생하지만 하나씩 추가하면 아무런 문제가 발생하지 않습니다. 내가 잘못된 점이 무엇인지 궁금 하네. 감사.루프에 버튼 핸들러 추가

JButton[ ] myButtonArray = { but1, but2, but3 }; 
ButtonHandler bh = new ButtonHandler(); 

for (JButton cur : myButtonArray) { // I tried standard for loop as well. 
    cur.addActionListener(bh); 
} 
+0

예외가 포함 된 스택 추적을 게시하십시오. –

+0

당신은'ButtonHandler'에 대한 코드를 보여줄 수 있습니까? 그것은 무엇을 연장합니까? – Jonas

+0

다음과 같이 쓸 때 ButtonHandler에는 문제가 없습니다. but1.addActionListener (bh); – NotCamelCase

답변

5

나를 위해 완벽하게 정상적으로 작동 ..이 데모를보십시오

enter image description here

package sof; 

import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 

public class CustomLayoutFrame{ 
    public static void main(String args[]) { 
     JFrame frame = new JFrame("Custom Layout Frame"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.setLayout(new GridLayout(3,1)); 

     JButton but1 = new JButton("Button1"); 
     JButton but2 = new JButton("Button2"); 
     JButton but3 = new JButton("Button3"); 

     JButton[ ] myButtonArray = { but1, but2, but3 }; 
     ButtonHandler bh = new ButtonHandler(); 

     for (JButton cur : myButtonArray) { // I tried standard for loop as well. 
      cur.addActionListener(bh); 
     } 

     frame.add(but1); 
     frame.add(but2); 
     frame.add(but3); 

     frame.setSize(300, 150); 
     frame.setVisible(true); 
     } 
} 

class ButtonHandler implements ActionListener{ 
    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     System.out.println(((JButton)(arg0.getSource())).getText() + " Clicked !"); 

    } 
} 
+0

내 것과 동일합니다. 내 버튼에는 텍스트가 있으며 레이아웃 위에 배치됩니다. – NotCamelCase

+0

괜찮습니다. 나에게도 효과적입니다. 내 실수가 무엇인지 알아 보겠습니다. – NotCamelCase

+0

@berkantk - 위의 – bragboy

1

그리고 당신은 but1, but2but3를 초기화 했습니까? 그것이 널 포인트 인식의 가장 가능성있는 소스이기 때문입니다.

+0

내가 초기화했는데, 내가 클래식으로 추가했을 때와 같은 오류가 아닌가? – NotCamelCase

1

나는 당신의 버튼 중 하나 이상을 거라 생각은 null입니다 - 즉 but1, but2, 또는 but3 (또는 모두) 초기화되지 않았습니다. Wh

관련 문제