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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李建雄 黑马帝   /  2011-10-27 00:58  /  2139 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我用的是myeclipse  为什么一加红色字部分的代码,就报错?


import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class KeyEventDemo {
        private Frame f;
        private TextField tf;
        KeyEventDemo(){
                init();
        }
        public void init(){
                f=new Frame("MyFrame");
                TextField tf=new TextField(50);
                f.setBounds(300, 100, 600, 400);
                f.setLayout(new FlowLayout());
               
                f.add(tf);
                myEvent();
               
                f.setVisible(true);
        }
        public void myEvent(){
               
                f.addWindowListener(new WindowAdapter() {
                        @Override
                        public void windowClosing(WindowEvent e) {
                                // TODO Auto-generated method stub
                                super.windowClosing(e);
                                System.exit(0);
                        }
                       
                });
               
               
                tf.addKeyListener(new KeyAdapter() {

                        @Override
                        public void keyPressed(KeyEvent e) {
                                int code=e.getKeyCode();
                                if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9)){
                                        System.out.println("非法");
                                }
                        }
                       
                });
               
        }
        public static void main(String[] args) {
                new KeyEventDemo();

        }

}

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 共同等待答案。

查看全部评分

4 个回复

倒序浏览
空指针异常,因为给tf加监听器的时候tf对象还没初始化,可以把 tf.addKeyListener(new KeyAdapter() 操作放到init()里面,或者在开头的时候给tf初始化一下
回复 使用道具 举报
空指针异常,因为在给tf加监听器的时候tf还没被实例化,可以把 tf.addKeyListener(new KeyAdapter() 操作放到init()里面,或者在开头给tf初始化
回复 使用道具 举报
黄健 黑马帝 2011-10-27 09:32:16
板凳
可能是手误吧

public class KeyEventDemo {
        private Frame f;
        private TextField tf;//此变量一直都未赋值,一直都是null,所以下面监听访问它的方法时报空指针异常
        KeyEventDemo(){
                init();
        }
        public void init(){
                f=new Frame("MyFrame");
               
                /*TextField*/ tf=new TextField(50);//此tf变量是局部变量,方法执行完就没有了。把TextField注释掉,就正常了
                f.setBounds(300, 100, 600, 400);
                f.setLayout(new FlowLayout());
               
                f.add(tf);
                myEvent();
               
                f.setVisible(true);
        }

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
谢谢,楼上!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马