黑马程序员技术交流社区

标题: 麻烦帮我看一个问题谢谢 [打印本页]

作者: fenzheng    时间: 2014-5-29 15:07
标题: 麻烦帮我看一个问题谢谢
[img][/img]package com.itheima;
import java.awt.*;
import javax.swing.*;
public class Haha extends JFrame{
        private JTextField wbk;
        private JPasswordField mmk;
        private JLabel bq1,bq2;
        private JPanel mb1,mb2,mb3;
        private JButton an1,an2;
        public Haha(){
                mb1=new JPanel();
                mb2=new JPanel();
                mb3=new JPanel();
                wbk=new JTextField(10);
                mmk=new JPasswordField(10);
                bq1=new JLabel("username");
                bq2=new JLabel("password");
                an1=new JButton("login");
                an1=new JButton("unlogin");
               
                this.setLayout(new GridLayout(3,1));
                mb1.add(bq1);mb1.add(wbk);
                mb2.add(bq2);mb2.add(mmk);
                mb3.add(an1);mb3.add(an2);
                this.add(mb1);
                this.add(mb2);
                this.add(mb3);
                this.setTitle("lgoingwindow");
                this.setSize(300,300);
                this.setVisible(true);
                this.setResizable(false);
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args){
                new Haha();
        }
       
}






Exception in thread "main" java.lang.NullPointerException
        at java.awt.Container.addImpl(Container.java:1090)
        at java.awt.Container.add(Container.java:410)
        at com.itheima.Haha.<init>(Haha.java:24)
        at com.itheima.Haha.main(Haha.java:35)

作者: 波涛    时间: 2014-5-29 15:29
很明显嘛,你的第18,19行两次给an1这个按钮赋值?第二个应该是an2, 你写错了。
作者: fenzheng    时间: 2014-5-29 15:32
哦,这样啊!,你怎么一下就看出来了,我就不知道为什么呢?
作者: 波涛    时间: 2014-5-29 18:23
本帖最后由 波涛 于 2014-5-29 18:25 编辑
fenzheng 发表于 2014-5-29 15:32
哦,这样啊!,你怎么一下就看出来了,我就不知道为什么呢?

从你贴出的错误信息找到的,报NullPointerException(空指针异常),一般情况下是由于某个对象没有实例化就直接使用导致的。
Exception in thread "main" java.lang.NullPointerException
        at java.awt.Container.addImpl(Container.java:1090)
        at java.awt.Container.add(Container.java:410)
        at com.itheima.Haha.<init>(Haha.java:24)
        at com.itheima.Haha.main(Haha.java:35)

看到以上错误你这样来分析:
首先看最后一行提示,说第35行代码出错,然后你就回头看35行是什么,一看是主方法中的new Haha();
                                    这句出错,说明new对象失败,哪里引起的?
继续看上一行错误提示就知道了,提示24行代码出错(导致35行失败的原因),查看24行代码“mb3.add(an2);”
                           说明控件an2添加到mb3失败,why? 显然,通过最上面人家已经给你的提示“NullPointerException",说明
                           对象mb3或an2其中有一个你没有初始化就拿来用了,在你的代码中一查证,ok,原来是你的按钮an2没有初始化,所以添加到mb3失败。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2