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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM