A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨朔 于 2012-6-23 10:49 编辑

import java.awt.*;
import java.awt.event.*;
public class FrameDemo  {
        
        private Frame f;
        private Button b;
        
        public void init(){
               
                f.setBounds(100, 200, 200, 300);
                f.setLayout(new FlowLayout());
                f.setVisible(true);
               
                f=new Frame("my frame");
                b=new Button("my button");
               
                f.add(b);
                myEvent();
               
               
        }
        private void myEvent(){
               
                f.addWindowListener(new WindowAdapter(){
                        public void windowColsing(WindowEvent e){
                                System.out.println("tuichu");
                                System.exit(0);
                        }
                });
        }
        
        FrameDemo(){
                init();
        }

        public static void main(String[] args) {
               
                new FrameDemo();
               

        }

}
Exception in thread "main" java.lang.NullPointerException
        at FrameDemo.init(FrameDemo.java:10)
        at FrameDemo.<init>(FrameDemo.java:33)
        at FrameDemo.main(FrameDemo.java:38)

5 个回复

倒序浏览
本帖最后由 丁二跃 于 2012-6-22 10:20 编辑

大哥贴代码吧,行数贴出来,这样看着不爽啊


init 方法中  f=new Frame("my frame");
应该放在最前面吧
回复 使用道具 举报
本帖最后由 淡然 于 2012-6-22 10:23 编辑

package hcy.test.main;
import java.awt.*;
import java.awt.event.*;
public class Test  {
        
        private Frame f;
        private Button b;
        
        public void init(){
               
           
               
                f=new Frame("my frame");
                b=new Button("my button");
               
//在你上面的程序中,没有生成Frame对象f时就开始使用f了,所以会出现NullPointException异常
                f.setBounds(100, 200, 200, 300);
                f.setLayout(new FlowLayout());
                f.setVisible(true);
                f.add(b);
               
                myEvent();
               
               
        }
        private void myEvent(){
               
                f.addWindowListener(new WindowAdapter(){
                        public void windowColsing(WindowEvent e){
                                System.out.println("tuichu");
                                System.exit(0);
                        }
                });
        }
        
        Test(){
                init();
        }

        public static void main(String[] args) {
               
                new Test();
               

        }

}
回复 使用道具 举报
本帖最后由 黑马_张佳超 于 2012-6-22 10:38 编辑
  1. public class FrameDemo  {
  2.          
  3.         private Frame f;
  4.          private Button b;
  5.          
  6.         public void init(){
  7.                  f=new Frame("my frame");//先进行对象的实例化操作

  8.                  f.setBounds(100, 200, 200, 300);
  9.                  f.setLayout(new FlowLayout());
  10.                  f.setVisible(true);
  11.                  
  12.               
  13.                  b=new Button("my button");
  14.                  
  15.                 f.add(b);
  16.                  myEvent();
  17.                  
  18.                
  19.         }
  20.          private void myEvent(){
  21.                  
  22.                 f.addWindowListener(new WindowAdapter(){
  23.                          public void windowColsing(WindowEvent e){
  24.                                  System.out.println("tuichu");
  25.                                  System.exit(0);
  26.                          }
  27.                  });
  28.          }
  29.          
  30.         FrameDemo(){
  31.                  init();
  32.          }

  33.         public static void main(String[] args) {
  34.                  
  35.                 new FrameDemo();
  36.                  

  37.         }

  38. }
复制代码
f=new Frame("my frame");
红色字体表示创建一个新的Frame,在对象没有被实例化的时候,Frame的引用变量f为空的时候,为f赋值就会出现空指针异常,也就是根本还不存在的对象是无法进行操作的。
回复 使用道具 举报
你没有创建Frame对象啊。可以这样:
  1. package cn.java.xml;

  2. import java.awt.*;
  3. import java.awt.event.*;
  4. public class FrameDemo  {
  5.         
  6.         private Frame f;
  7.         private Button b;
  8.         
  9.         public void init(){
  10.                
  11.                 f=new Frame();
  12.                 f.setBounds(100, 200, 200, 300);
  13.                 f.setLayout(new FlowLayout());
  14.                 f.setVisible(true);
  15.                
  16.                 f=new Frame("my frame");
  17.                 b=new Button("my button");
  18.                
  19.                 f.add(b);
  20.                 myEvent();
  21.                
  22.                
  23.         }
  24.         private void myEvent(){
  25.                
  26.                 f.addWindowListener(new WindowAdapter(){
  27.                         public void windowColsing(WindowEvent e){
  28.                                 System.out.println("tuichu");
  29.                                 System.exit(0);
  30.                         }
  31.                 });
  32.         }
  33.         
  34.         FrameDemo(){
  35.                 init();
  36.         }

  37.         public static void main(String[] args) {
  38.                
  39.                 new FrameDemo();
  40.                

  41.         }

  42. }
复制代码
回复 使用道具 举报
这个异常好解决,直接看异常行,很容易找
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马