HIT软件构造——键盘事件处理

本文介绍了Java中处理键盘事件的方法,通过KeyEvent类和KeyListener接口实现对键盘输入的监听。示例代码展示了如何捕获并处理按键按下、释放和击键事件,包括检测Ctrl、Alt和Shift键的状态,以及获取按键对应的字符和描述标签。
摘要由CSDN通过智能技术生成

1.键盘事件

当我们向程序框中输入内容时,会产生键盘事件。Java中专门设立了KeyEvent类来捕获键盘事件,可通过为组件添加实现了KeyListener接口的监听器类来处理相应的键盘事件。

KeyListener接口有三种方法如下:

public interface KeyListener extends EventListener
{
    public void keyTyped(KeyEvent e);    //发生击键事件时被触发
    public void keyPressed(KeyEvent e);   //按键被按下时被触发
    public void keyReleased(KeyEvent e);   //按键被松开时被触发
}

KeyEvent类中常用方法如下:

            方法                                             功能简介
getSource()用来获得触发此次事件的组件对象,返回值为Object类型
getKeyChar()用来获得与此事件中的键相关的字符
getKeyCode()用来获得与此事件中的键相关的整数keyCode
getKeyText(int keyCode)

用来获得描述keyCode的标签,如A、F1、HOME

isActionKey()用来查看此事件中的键是否为动作键
isControlDown()

用来查看Ctrl键在此次事件中是否被按下

isAltDown()用来查看Alt键在此次事件中是否被按下
isShiftDown()用来查看Shift键在此次事件中是否被按下

下面是一个处理键盘事件的实例,先后输入m,空格,M,Shift,F5

final JLable label = new JLable();
label.setText("备注:");
getContentPane().add(label , BorderLayout.WEST);
final JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane , BorderLayout.CENTER);
JTextArea textArea = new JTextArea();
textArea.addKeyListener(new KeyListener())
{
    public void keyPressed(KeyEvent e)  //按键按下时触发
    {
        String keyText = KeyEvent.getKeyText(e.getKeyCode());   //获得描述keyCode的标签
        if(e.isActionKey())
            System.out.println("您按下的是动作键"+keyText);
        else
        {
            System.out.println("您按下的是非动作键"+keyText);
            int keyCode = e.getKeyCode();
            switch(keyCode)
            {
                case KeyEvent.VK_CONTROL: System.out.print("Ctrl键被按下"); break;
                //判断是否按下Control键
                case KeyEvent.VK_ALT: System.out.print("Alt键被按下"); break;
                //判断是否按下Alt键
                case KeyEvent.VK_SHIFT: System.out.print("Shift键被按下"); break;
                //判断是否按下Shift键
            }
            System.out.println("\n");
    }

}
public void keyTyped(keyEvent e)   //发生击键事件时被触发
{
    System.out.println("此次输入的是"+e.getKeyChar());
    //获得输入的字符
}    
public void keyReleased(keyEvent e)  //按键被释放时被触发
{
    String keyText = KeyEvent.getKeyText(e.getKeyCode());
    System.out.println("您释放的是"+keyText);
    System.out.println();
}
textArea.setLineWrap(true);
textArea.setRows(3);
textArea.setColumns(15);
scrollPane.setViewportView(textArea);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值