黑马程序员技术交流社区
标题:
TextField加键盘监听事件为什么错
[打印本页]
作者:
李建雄
时间:
2011-10-27 00:58
标题:
TextField加键盘监听事件为什么错
我用的是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();
}
}
作者:
olkldksl
时间:
2011-10-27 07:23
空指针异常,因为给tf加监听器的时候tf对象还没初始化,可以把 tf.addKeyListener(new KeyAdapter() 操作放到init()里面,或者在开头的时候给tf初始化一下
作者:
olkldksl
时间:
2011-10-27 07:26
空指针异常,因为在给tf加监听器的时候tf还没被实例化,可以把 tf.addKeyListener(new KeyAdapter() 操作放到init()里面,或者在开头给tf初始化
作者:
黄健
时间:
2011-10-27 09:32
可能是手误吧
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);
}
作者:
李建雄
时间:
2011-10-27 16:19
谢谢,楼上!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2