当前位置 : IT培训网 > Java开发 > Java教程 > Java编程之键盘事件

Java编程之键盘事件

时间:2016-09-02 15:29:49  来源:Java培训网  作者:IT培训网  已有:名学员访问该课程
小应用程序有一个按钮和一个文本区,按钮作为发生键盘事件的事件源,并对它实施监视。程序运行时,先点击按钮,让按钮激活。以后输入英文字母时,在正文区显示输入的字母。字母显示时,字母之间用空格符分隔,且满10个字

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

键盘事件的事件源一般丐组件相关,当一个组件处于激活状态时,按下、释放或敲击键盘上的某个键时就会发生键盘事件。键盘事件的接口是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);

              }

       }

}

顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
Java教程
1、Java 概述
1.1 Java语言概述
1.2 Java虚拟机以及跨平台原理
1.3 Java的主要就业方向
1.4 Java的不同版本
1.5 Java开发环境搭建
1.6 第一个Java程序示例
1.7 Java类和对象的概念
1.8 Java类库及其组织结构
1.9 Java import
2、Java 语法基础
2.1 Java数据类型以及变量的定义
2.2 Java数据类型转换
2.3 Java运算符
2.4 Java流程控制
2.5 Java数组的定义和使用
2.6 Java字符串(String)
2.7 Java StringBuffer与StringBuider
2.8 强调一下编程风格
3、Java 类与对象
3.1 Java类的定义及其实例化
3.2 Java访问修饰符
3.3 Java变量的作用域
3.4 Java this关键字详解
3.5 Java方法重载
3.6 Java类的基本运行顺序
3.7 Java包装类、拆箱和装箱详解
3.8 再谈Java包
3.9 源文件的声明规则
4、Java 继承和多态
4.1 继承的概念与实现
4.2 Java super关键字
4.3 继承中的方法的覆盖和重载
4.4 多态和动态绑定
4.5 instanceof 运算符
4.6 多态对象的类型转换
4.7 Java static关键字
4.8 Java final关键字
4.9 Java Object类
5、面向对象高级特性
5.1 Java内部类及其实例化
5.2 内部类的分类
5.3 抽象类的概念和使用
5.4 接口的概念和使用
5.5 接口和抽象类的区别
5.6 Java 泛型
5.7 泛型通配符和类型参数的范围
6、异常处理
6.1 异常处理基础
6.2 异常类型Java语言中常见的异常类型有哪些
6.3 未被捕获的异常
6.4 try和catch的使用
6.5 多重catch语句的使用
6.6 try语句的嵌套
6.7 throw:异常的抛出
6.8 throws子句
6.9 finally块
6.10 Java的内置异常
6.11 创建自己的异常子类
6.12 断言
7、线程编程
7.1 线程的概念
7.2 Java线程模型
7.3 主线程
7.4 创建线程
7.5 创建多线程
7.6 isAlive()和join()的使用
7.7 线程优先级
7.8 线程同步
7.9 线程间通信
7.10 线程死锁
7.11 线程的挂起、恢复和终止
8、输入输出(IO)操作
8.1 输入输出基本概念
8.2 面向字符的输入流
8.3 面向字符的输出流
8.4 面向字节的输入输出流
8.5 面向字节流的应用
8.6 文件与目录管理
8.7 文件的随机读写
8.8 文件的压缩处理
9、常用类库、向量与哈希
9.1 Java基础类库
9.2 Object类
9.3 Java语言包(java.lang)简介
9.4 日期和时间类
9.5 向量及其应用
9.6 哈希表及其应用
10、图形界面(GUI)设计
10.1 图形界面设计基础
10.2 框架窗口
10.3 标签、按钮和按钮事件
10.4 面板
10.5 布局设计
10.6 文本框和文本区
10.7 文本框和文本区的输入输出
10.8 选择框和单选按钮
10.9 列表和组合框
10.10 菜单
10.11 对话框
10.12 滚动条
10.13 鼠标事件
10.14 键盘事件
11、图形、图像与多媒体
11.1 绘图基础
11.2 设置字型和颜色
11.3 绘图模式
11.4 Graphics类的绘图方法
11.5 Graphics2D类的绘图方法
11.6 图像处理基础
11.7 图像缓冲技术
11.8 多媒体基础
12、网络与数据库编程
12.1 IP地址和InetAddress类
12.2 统一资源定位符
12.3 套接字(Socket)
12.4 数据库连接
12.5 几个重要的类和接口
12.6 数据库查询
12.7 数据库更新
12.8 插入记录
12.9 修改记录
12.10 删除记录