黑马程序员技术交流社区
标题:
关于第八节GUI键盘事件的问题
[打印本页]
作者:
陈雪琪
时间:
2013-6-6 13:38
标题:
关于第八节GUI键盘事件的问题
本帖最后由 陈雪琪 于 2013-6-6 20:08 编辑
import java.awt.*;
import java.awt.event.*;
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,600,500);
f.setLayout(new FlowLayout());
tf = new TextField(20);
but = new Button("my button");
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();
}
}
});
//给But添加一个键盘监听。
but.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
//System.exit(0);
System.out.println("ctrl+enter is run");
//System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode());
}
});
}
public static void main(String[] args)
{
new MouseAndKeyEvent();
}
}
复制代码
这个是毕老师视频里面的代码。
第一个问题:
因为我笔记本打字用的不是笔记本上面的键盘,而是类似于台式电脑的那种键盘,所以右边是有一小片数字的。不知道为什么运行老毕的代码后,我在文本域中输的是右边那一小片数字时,会显示是非法的,获取的code值输入数字1输出为:97...是非法的。
纠结,这一小片数字和字母上面的一排数字有什么区别?{:soso_e136:}
第二个问题:
经过测试,我发现这段代码,在文本域中是可以输入中文的,而且英文也可以输入进去{:soso_e101:},(用的搜狗拼音,中文状态下输入字母a,然后按shift键,然后a字母就输入进去了。。。)
纠结,不知道是不是钻牛角尖了,求指教!!
该帖子已在第21期被解决啦
/*
显然这一句是判断是否非法的语句,判断依据是键盘信号的unicode码,小键盘和主键盘的数字生成的unicode码不同,判断语句中只判断了主键盘的数字区域
至于第二个问题,因为判断非法与否是通过直接接收的键盘信号判断的,用了输入法的话等于把信号拦截一下再输送给监听期,输入法给监听器的信号是怎样的就不晓得了
*/
应该就是这个原因了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2