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()返回输入的字符

import  java.awt.*;
import  java.awt.event.*;
import  javax.swing.*;

public  class  KeyEventDemo  extends  JFrame{
         private  KeyboardPanel  keyboardPanel  =  new  KeyboardPanel();
       
         public  KeyEventDemo(){
              add(  keyboardPanel );
              
                keyboardPanel .setFocusable( true );
              
       }
       
         public  static  void  main(String[] args){
              KeyEventDemo frame =  new  KeyEventDemo();
              frame.setTitle(  "KeyEventDemo" );
              frame.setSize(300,300);
              frame.setLocationRelativeTo(  null );
              frame.setDefaultCloseOperation(JFrame.  EXIT_ON_CLOSE );
              frame.setVisible(  true );
              
       }
       
         static  class  KeyboardPanel  extends  JPanel{
                private  int  x  = 100;
                private  int  y  = 100;
                private  char  KeyChar  =  'A'  ;
              
                public  KeyboardPanel(){
                     addKeyListener(  new  KeyAdapter(){
                             public  void  keyPressed(KeyEvent e){
                                    switch (e.getKeyCode()){
                                    case  KeyEvent. VK_DOWN :  y  += 10; break ;
                                    case  KeyEvent. VK_UP :  y  -= 10;  break ;
                                    case  keyEvent.VK_LEFT:  x  -= 10;  break ;
                                    case  KeyEvent. VK_RIGHT :  x  += 10;  break ;
                                    default : keyChar = e.getKeyChar();
                                  }
                                  
                                  repaint();
                           }
                     });
              }
              
                protected  void  paintComponent(Graphics g){
                       super .paintComponent(g);
                     
                     g.setFont(  new  Font( "TimesRoman"  ,Font. PLAIN ,24));
                     g.drawString(String. valueOf( KeyChar ),  x ,  y );
              }
       }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值