本帖最后由 陈雪琪 于 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码不同,判断语句中只判断了主键盘的数字区域
至于第二个问题,因为判断非法与否是通过直接接收的键盘信号判断的,用了输入法的话等于把信号拦截一下再输送给监听期,输入法给监听器的信号是怎样的就不晓得了
*/
应该就是这个原因了。
|