当前位置 : 首页> Java教程 > Java编程之键盘事件

Java编程之键盘事件

时间:2016-09-02 15:29   已访问:397次

有鼠标就有键盘,既然鼠标方面的程序都学习了,顺带将键盘方面的程序也学习下吧。

键盘事件的事件源一般丐组件相关,当一个组件处于激活状态时,按下、释放或敲击键盘上的某个键时就会发生键盘事件。键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListener(监视器)。实现KeyListener接口有3个:

keyPressed(KeyEvent e):键盘上某个键被按下;

keyReleased(KeyEvent e):键盘上某个键被按下,又释放;

keyTyped(KeyEvent e):keyPressed和keyReleased两个方法的组合。

管理键盘事件的类是KeyEvent,该类提供方法:

public int getKeyCode(),获得按动的键码,键码表在KeyEvent类中定义,参见附录。

【例 11-20】小应用程序有一个按钮和一个文本区,按钮作为发生键盘事件的事件源,并对它实施监视。程序运行时,先点击按钮,让按钮激活。以后输入英文字母时,在正文区显示输入的字母。字母显示时,字母之间用空格符分隔,且满10个字母时,换行显示。

import java.applet.*

import java.awt.*;

import java.awt.event.*;

public class Example6_10 extends Applet implements KeyListener{

    int count =0;

    Button button = new Button();

    TextArea text = new TextArea(5,20);

    public void init(){

        button.addKeyListener(this);

        add(button);add(text);

    }

    public void keyPressed(KeyEvent e){

        int t = e.getKeyCode();

        if(t>=KeyEvent.VK_A&&t<=KeyEvent.VK_Z){

            text.append((char)t+" ");

            count++;

            if(count%10==0)

                text.append("\n");

        }

    }

    public void keyTyped(KeyEvent e){}

    public void keyReleased(KeyEvent e){}

}

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);

              }

       }

}


推荐内容