Java按键事件KeyEvent

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java按键事件KeyEvent相关的知识,希望对你有一定的参考价值。

按键事件可以利用键盘来控制和执行一些动作,或者从键盘上获取输入,只要按下,释放一个键或者在一个组件上敲击,就会触发按键事件。KeyEvent对象描述事件的特性(按下,放开,或者敲击一个键)和对应的值。java提供KeyListener接口处理按键事件。

     当按下一个键时会调用KeyPressed处理器,当松开一个键时会调用KeyReleased处理器,当输入一个统一编码时会调用KeyTyped处理器。如果这个键不是统一码(如功能键,修改键,动作键和控制键)
     每个按键事件有一个相关的按键字符和按键代码,分别由KeyEvent中的getKeyChar()和getKeyCode()方法返回
 
     getKeyChar():  char           返回这个事件中和键相关的字符
     getKeyCode():  int             返回这个事件中和键相关的整数键
 
keyPressed(e: KeyEvent)         在源组件上按下一个键后被调用
KeyReleased(e: KeyEvent)       在源组件上释放一个键后被调用
KeyTyped(e: KeyEvent)           在源组件上按下一个键然后释放该键后被调用
 
按键常量
 
VK_HOME         Home键                          VK_CONTROL                  控制键
VK_END            End键                             VK_SHIFT                       shift键
VK_PGUP          page up键                       VK_BACK_SPACE             退格键
VK_PGDN          page down键                   VK_CAPS_LOCK              大小写锁定键
VK_UP              上箭头                            VK_NUM_LOCK                小键盘锁定键
VK_DOWN         下箭头                            VK_ENTER                      回车键
VK_LEFT           左箭头                            VK_UNDEFINED                未知键
VK_RIGHT          右箭头                           VK_F1--VK_F12                F1 -- F12
VK_ESCAPE       Esc键                              VK_0 --VK_9                    0 --- 9
VK_TAB             Tab键                             VK_A --VK_Z                    A----Z
 
getKeyCode()返回定义在表中的值
getKeyChar()返回输入的字符
 
 1 import java.awt.*;
 2 import java.awt.event.*;
 3 import javax.swing.*;
 4  
 5 public class KeyEventDemo extends JFrame{
 6         private KeyboardPanel keyboardPanel = new KeyboardPanel();
 7        
 8         public KeyEventDemo(){
 9               add( keyboardPanel);
10               
11                keyboardPanel.setFocusable(true);
12               
13        }
14        
15         public static void main(String[] args){
16               KeyEventDemo frame = new KeyEventDemo();
17               frame.setTitle( "KeyEventDemo");
18               frame.setSize(300,300);
19               frame.setLocationRelativeTo( null);
20               frame.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
21               frame.setVisible( true);
22               
23        }
24        
25         static class KeyboardPanel extends JPanel{
26                private int x = 100;
27                private int y = 100;
28                private char KeyChar = ‘A‘ ;
29               
30                public KeyboardPanel(){
31                      addKeyListener( new KeyAdapter(){
32                             public void keyPressed(KeyEvent e){
33                                    switch(e.getKeyCode()){
34                                    case KeyEvent.VK_DOWN: y += 10;break;
35                                    case KeyEvent.VK_UP: y -= 10; break;
36                                    case keyEvent.VK_LEFT: x -= 10; break;
37                                    case KeyEvent.VK_RIGHT: x += 10; break;
38                                    default: keyChar = e.getKeyChar();
39                                   }
40                                   
41                                   repaint();
42                            }
43                      });
44               }
45               
46                protected void paintComponent(Graphics g){
47                       super.paintComponent(g);
48                      
49                      g.setFont( new Font("TimesRoman" ,Font.PLAIN,24));
50                      g.drawString(String. valueOf(KeyChar), x, y);
51               }
52        }
53 }

 

以上是关于Java按键事件KeyEvent的主要内容,如果未能解决你的问题,请参考以下文章

appium+python自动化38-adb shell按键操作(input keyevent)

Android TV中按键事件和焦点处理总结

按键事件错误

KeyEvent事件

Android系统中自定义按键的短按双击长按事件

安卓onKeyDown事件 重新获取焦点