本帖最后由 七年锦·旅行 于 2014-8-2 20:53 编辑
小白在学习毕向东老师的Java基础视频第22天的图形化界面的键盘事件时,在给文本框添加键盘监听器时,出现了在键入文本框合法的数字时,却在运行时不能键入规定的正确数字的现象,代码和运行效果如下:
import java.awt.*;
import java.awt.event.*;
public class MouseAndKeyEvent {
private Frame f ;
private Button but;
private TextField tf;
MouseAndKeyEvent(){
init();
}
public void init(){
f = new Frame("my frame");
f.setBounds(300,100,500,400);
f.setLayout(new FlowLayout());
but = new Button("my button");
tf = new TextField(20);
//将文本框添加到窗体中来
f.add(tf);
//将按钮添加到窗体中来
f.add(but);
myEvent();
f.setVisible(true);
}
private void myEvent(){
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
} );
//给文本框添加键盘监听器
tf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e ){
int code = e.getKeyCode();
if( !(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9) )
System.out.println(code+"....是非法的");
//取消非法输入
e.consume();
}
} );
//给Button组件添加鼠标事件监听器
but.addMouseListener(new MouseAdapter(){
//为了看到效果,定义一个计数器
private int enterCount = 1;
private int clickCount = 1;
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入组件第"+enterCount+++"次");
}
public void mouseClicked(MouseEvent e){
//System.out.println("鼠标点击第"+clickCount+++"次");
if(e.getClickCount()==2)
System.out.println("鼠标双击"+clickCount++);
}
} );
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("action ok !");
}
});
运行效果如下:
代码部分应该没有什么问题,就是运行的结果中,给文本框输入符合条件的0-9数字没有显示,只显示非法的键盘输入???请路过的学长,前辈,高手帮小白看看,到底是什么原因导致了这种情况的产生?!
|
|