本来没什么,把书上的一个关于java GUI的最简单的例程打了一遍,监听器实现按下按钮后按钮上的字改变。
代码和书上一样一样的,但运行点击按钮时按钮文字无变化,而且提示:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at SimpleGUI.actionPerformed(SimpleGUI.java:36)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
--------------------【无语了……下面将源码贴出来】-------------------------------------------------
import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class SimpleGUI implements ActionListener{
JButton button;
public static void main (String[] args){
SimpleGUI gui=new SimpleGUI();
gui.go();
}

public void go(){
JFrame frame=new JFrame();
JButton button =new JButton("click me");
button.addActionListener(this);
frame.getContentPane().add(BorderLayout.SOUTH,button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

public void actionPerformed(ActionEvent event){
button.setText("Yes!");
}
}
到底哪里的问题?求解答!!!

解决方案 »

  1.   

    java.lang.NullPointerException空指针,看一下,具体的不清楚祝你好运
      

  2.   

    哈哈,书上代码错了。
    JButton button =new JButton("click me");
    改成
    this.button =new JButton("click me");
      

  3.   

    go()方法中的
    JButton button =new JButton("click me");
    改成
    button =new JButton("click me");
      

  4.   

    你自己查查看看是不是哪里抄错了,给你一个正常的import java.awt.*;
    import java.awt.event.*;import javax.swing.*;public class SimpleGUI implements ActionListener{
        JButton button =new JButton("click me");
        public static void main (String[] args){
            SimpleGUI gui=new SimpleGUI();
            gui.go();
        }    public void go(){
            JFrame frame=new JFrame();
    //        JButton button =;
            button.addActionListener(this);
            frame.getContentPane().add(BorderLayout.SOUTH,button);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setSize(300,300);
            frame.setVisible(true);
        }    public void actionPerformed(ActionEvent event){
            button.setText("Yes!");
        }
    }
      

  5.   

    书上代码,写的粗心,他没有把新建的button对象赋值给SimpleGUI类的成员变量button,所以成员变量button还是null,所以会出现java.lang.NullPointerException
      

  6.   

    button还没有实例化,应该是这个问题导致了空指针异常
      

  7.   

    java.lang.NullPointerException这种错误,很好找的,你就找哪个引用变量没赋值就行了。
      

  8.   

    这么一说对了!唉,我可是再看大名鼎鼎的《Head First Java》啊,书中的错让我情何以堪……