zoukankan      html  css  js  c++  java
  • JAVA:事件监听器之键盘监听

    addKeyListener

    public void addKeyListener(KeyListener l)

    添加指定的按键侦听器,以接收发自此组件的按键事件。如果 l 为 null,则不会抛出异常并且不执行动作。 

    java.awt.event
    接口 KeyListener

    用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法)

    然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。 

    方法摘要
    void keyPressed(KeyEvent e)
    按下某个键时调用此方法。
    void keyReleased(KeyEvent e)
    释放某个键时调用此方法。
    void keyTyped(KeyEvent e)
    键入某个键时调用此方法。

    ——摘自:JDK6API

    例子:

     1 import javax.swing.*;
     2 import java.awt.*;
     3 import java.awt.event.*;
     4 public class KeyDemo
     5 {
     6     //定义该图形中所需的组件的引用
     7     private Frame f;
     8     private Button bt; 
     9     private TextField tf;
    10     
    11     //方法
    12     KeyDemo()//构造方法
    13     {
    14         madeFrame();
    15     }
    16     
    17     public void madeFrame()
    18     {
    19         f = new Frame("My Frame");
    20         
    21         //对Frame进行基本设置。
    22         f.setBounds(300,100,600,500);//对框架的位置和大小进行设置
    23         f.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));//设计布局
    24         
    25         bt = new Button("My Button");
    26         tf = new TextField(20);
    27         
    28         //将组件添加到Frame中
    29         f.add(tf);
    30         f.add(bt);
    31         
    32         //加载一下窗体上的事件
    33         myEvent();
    34         
    35         //显示窗体
    36         f.setVisible(true);
    37     }
    38     
    39     private void myEvent()
    40     {
    41         f.addWindowListener(new WindowAdapter()//窗口监听
    42         {
    43             public void windowClosing(WindowEvent e)
    44             {
    45                 System.out.println("窗体执行关闭!");
    46                 System.exit(0);
    47             }
    48         });
    49         bt.addKeyListener(new KeyAdapter()//键盘监听按钮
    50         {
    51             public void keyPressed(KeyEvent e)
    52             {
    53                 if(e.getKeyCode()==KeyEvent.VK_ESCAPE)
    54                    System.exit(0);
    55                 //组合键
    56                 else if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
    57                    System.exit(0);
    58                 else System.out.println(e.getKeyChar()+"..."+KeyEvent.getKeyText(e.getKeyCode()));
    59             }
    60             
    61         });
    62         tf.addKeyListener(new KeyAdapter()
    63         {
    64             public void keyPressed(KeyEvent e)
    65             {
    66                 int code = e.getKeyCode();
    67                 if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
    68                 {
    69                     System.out.println(code+"..."+"是非法的");
    70                     e.consume();
    71                 }
    72             }
    73         });
    74     }
    75     
    76     public static void main(String[] agrs)
    77     {
    78         new KeyDemo();
    79     }
    80 }
  • 相关阅读:
    C语言第0次作业
    c语言博客作业02循环结构
    C语言博客作业04数组
    存储过程,函数参数默认值的一些问题
    路线查询
    C# 猜数字
    使用 Ext.Net TreePanel,TabPanel控件 布局
    SQL SERVER 2005 动态行转列SQL
    CROSS APPLY 和OUTER APPLY 的区别
    处理表重复记录(查询和删除)
  • 原文地址:https://www.cnblogs.com/KeenLeung/p/2520657.html
Copyright © 2011-2022 走看看