黑马程序员技术交流社区

标题: 第二十二天 键盘事件 [打印本页]

作者: 郝勇    时间: 2013-3-23 13:56
标题: 第二十二天 键盘事件
本帖最后由 郝勇 于 2013-3-24 08:13 编辑



如上图第十行中System.out.println(e.getKeyChar()+"...."+e.getKeyCode());

getKeyChar()  返回键
getKeyCode() 返回键对应的码

而第九行中System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode());

e.getKeyCode()+"...."+e.getKeyCode()     两个都一样呢   都是返回键对应的码

这是老师为讲解 空格键 shift键对应码的问题写的一行程序   不是应该像第十行那样前面getKeyChar()吗?   

作者: 张昶    时间: 2013-3-23 15:50
是啊!那你没有运行吗?多联练习一下,应该就OK啦!
作者: 郝勇    时间: 2013-3-23 15:52
张昶 发表于 2013-3-23 15:50
是啊!那你没有运行吗?多联练习一下,应该就OK啦!

运行可以啊   就是想知道为什么!
作者: 张昶    时间: 2013-3-23 16:19
大哥,那你看到第九和第十行的区别没有?第九行是KeyEvent.getKeyText(getKeyCode()),可以直接获取用户从键盘上输入的ASCII值;getKeyChar(),是获取用户从键盘上输入的字符,而getKeyCode(),是字符相对应的ASCII值啊!
作者: 郝勇    时间: 2013-3-23 18:36
张昶 发表于 2013-3-23 16:19
大哥,那你看到第九和第十行的区别没有?第九行是KeyEvent.getKeyText(getKeyCode()),可以直接获取用户从 ...

我的意思是第九行中getKeyText后括号里的为什么两个都是e.getKeyCode()  而不写成
e.getKeyChar()+"...."+e.getKeyCode()

System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode());
作者: 张昶    时间: 2013-3-23 18:40
第九行是获取用户从键盘上输入的ASCII值,直接输出从键盘上输入的ASCII值;
第十行是通过getKeyChar()方法,获取用户从键盘上输入的字符,然后通过getKeyCode()方法,获取这个字符相对应的ASCII值啊!
懂了没?
作者: 张昶    时间: 2013-3-23 18:44
例如:
第九行,你输入“123”(假设“123”的ASCII值是“123”),则它就输出“123”;
第十行,你输入字符a,则它就输出a字符相对应的ASCII值--97。
作者: 郝勇    时间: 2013-3-23 18:51
张昶 发表于 2013-3-23 18:44
例如:
第九行,你输入“123”(假设“123”的ASCII值是“123”),则它就输出“123”;
第十行,你输入字 ...

System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode());
上面那句话  输入Shift        输出   Shift....43(数字是我随便写的)


System.out.println(e.getKeyChar()+"...."+e.getKeyCode());
而这句话输入'A'   输出     A....23

我的意思是   上面那句中  为什么是两个e.getKeyCode()    不是应该输出两个都是数字么

作者: 张昶    时间: 2013-3-23 18:58
键盘监听接口:  KeyListener所有方的法参数(KeyEvent e)

       but.addKeyListener(newKeyAdapter(){

           publicvoid keyPressed(KeyEvente){

              System.out.println("按下了键盘的:"+KeyEvent.getKeyText(e.getKeyCode())+":"+e.getKeyCode());、

       //KeyEvent.getKeyText(e.getKeyCode()) 返回的键的字符串名称

               }

       });

    tf.addKeyListener(newKeyAdapter()

        {

            publicvoid keyPressed(KeyEvent e)

            {

                intcode = e.getKeyCode();

                if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))

                {

                    System.out.println(code+"输入错误,请输入数字");

                    e.consume(); //输入非数字时 不能被输入到TextFile中

                }

            }

        });


作者: 郝勇    时间: 2013-3-23 19:02
张昶 发表于 2013-3-23 18:58
键盘监听接口:  KeyListener所有方的法参数(KeyEvent e)

       but.addKeyListener(newKeyAdapter(){

就是说  这个是特殊用法   不用getKeyChar()   
用getKeyChar()就可以实现 getKeyChar()   的效果   是这样理解么?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2