2012-06-04 2 views
-5

코드는 nullpointer 예외 ..... ..... 와트 할 오류가 발생합니까?자바 GUI 프로그래밍

import java.awt.event.*; 
import javax.swing.*; 

public class Gui implements ActionListener{ 
JButton button; 

public Gui(){ 
    JFrame frame=new JFrame(); 
    JButton button =new JButton("click me!"); 
    button.addActionListener(this); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().add(button); 
    frame.setSize(270,300); 
    frame.setVisible(true); 
} 
public static void main(String[] args){ 
    new Gui(); 
} 

public void actionPerformed(ActionEvent e){ 
    button.setText("I've been clicked"); 
} 

} 
+7

난 당신이 GUI 개발을 시도하기 전에 자바에 대해 좀 더 배울 필요가 있다고 생각 읽을 수 있습니다. – Jivings

+0

[초기 스레드] (http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)도 참조하십시오. – trashgod

답변

4

문제는 버튼이 생성자 내부에서만 보입니다.

12
JButton button =new JButton 

이렇게하면 로컬 변수가 만들어집니다.
button 필드는 여전히 null입니다.

5

actionPerformed 메서드에서 참조하는 필드 button은 초기화되지 않으므로 null입니다.

메인 메서드에 추가하는 JButton button =new JButton("click me!"); 버튼이 있지만 actionPerformed는이를 인식하지 못합니다.

변경 라인은

this.button =new JButton("click me!");