`
datuo
  • 浏览: 82317 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

键盘监听器和鼠标监听器

阅读更多

键盘监听器

键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KEY_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASCII码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual Key Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。

键码

含义

键码

含义

VK_LEFT/VK_RIGHT 左右方向键 VK_CONTROL Ctrl键
VK_KP_UP 小键盘向上 VK_ATL Alt键
VK_PAUSE 暂停键 VK_SHIFT Shift键
VK_NUMBER0 小键盘数字0 VK_F1 功能键F1
VK_0 数字键0 VK_B 字母键B 

虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONTROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。

监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt),keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。
除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKeyText(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。
下面的例子演示得到键码和字符的方法,在命令行上显示结果。

例15 本例程演示键盘监听器后键码的用法。

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

class MyKeyListener implements KeyListener{
  public void keyPressed(KeyEvent evt) {
    System.out.println("\n按键被按下");
    showKeyEventMsg(evt);
  }
  public void keyReleased(KeyEvent evt){ }
  public void keyTyped(KeyEvent evt) { }
  private void showKeyEventMsg(KeyEvent evt){//显示按键事件信息
    //得到按键对应的整型数
    int code = evt.getKeyCode();
    //返回按键事件所代表的字符
    char c = evt.getKeyChar();
    //得到代表按键的字符串
    String szText = evt.getKeyText(code);
    if (code != KeyEvent.VK_UNDEFINED)
        System.out.println("\n按键对应的整型数:"+code);
    if (c != KeyEvent.CHAR_UNDEFINED)
        System.out.println("\n与按键相联系的字符:"+c);
    if (evt.isShiftDown())
        System.out.println("\n按键Shift被按下");
    System.out.println("\n按键本身的字符串:"+szText);
  }
}
class ButtonPanel extends JPanel{
    public ButtonPanel() {
    //新建一个文本域组件
    tf = new JTextField(20);
    add(tf);
    //指定用来处理该按钮事件的监听器对象为JPanel本身
    myListener = new MyKeyListener();
    tf.addKeyListener(myListener);
  }
    private JTextField tf;
    private MyKeyListener myListener;
  }
class ButtonFrame extends JFrame{
  public ButtonFrame() {
    setTitle("键盘事件示例程序");
    setSize(300, 200);
    setLocation(100,100);
    addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e)
    { System.exit(0);
  }
  });
    Container ctPane = getContentPane();
    ctPane.add(new ButtonPanel());
 }
}
public class KeyEvt{
  public static void main(String[] args) {
    JFrame frame = new ButtonFrame();
    frame.setVisible(true);
  }
}
///

简要说明

  1. 程序建立了自己的键盘监听器MyKeyListener,定义了一个新方法showKeyEventMsg用来在标准输出设备上显示有关的键盘信息。

  2. 在面版ButtonPanel上建立文本框并加键盘监听器。把面版ButtonPanel放到窗口ButtonFrame中。

鼠标监听器

鼠标监听器mouseListener监听鼠标事件MouseEvent。相应事件和处理方法如下表:

鼠标事件         处理方法
MOUSE_CLICKED    MouseClicked (MouseEvent)    鼠标点击(单或双)
MOUSE_PRESSED    MousePressed (MouseEvent)    鼠标按下
MOUSE_RELEASED   MouseReleased(MouseEvent)    鼠标松开
MOUSE_ENTERED    MouseEntered (MouseEvent)    鼠标进入(某组件区域)
MOUSE_EXITED     MouseExited  (MouseEvent)    鼠标离开(某组件区域)

鼠标事件MouseEvent常用方法
int getClickCount()      得到点击次数1 OR 2;
int getX(), int getY()   得到鼠标的(象素)位置。

对于鼠标的移动和拖放,另外用鼠标运动监听器mouseMotionListener。因为许多程序不需要监听鼠标运动,把两者分开可简化程序。有两个方法处理鼠标运动事件:

MOUSE_MOVED      MouseMoved  (MouseEvent)    鼠标在移动
MOUSE_DRAGGED    MouseDragged(MouseEvent)    鼠标被拖动

下面的例程演示简单的鼠标监听,并在屏幕上输出鼠标操作的信息。

例16 本例程演示鼠标监听器,鼠标点击和运动的监听。

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

class MyPanel extends JPanel implements MouseMotionListener{
  public MyPanel() {
    addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent evt) {
        if (evt.getClickCount() >= 2)
            System.out.println("\n双击鼠标");
        int x = evt.getX(); int y = evt.getY();
        System.out.println("点击鼠标的位置\nX:" + x + "\ty: " + y);
        }
    });
    addMouseMotionListener(this);
  }
  public void mouseMoved(MouseEvent evt){
    System.out.println("\n鼠标正在移动");
  }
  public void mouseDragged(MouseEvent evt){
    System.out.println("\n鼠标正在拖动");
  }
}
class MyFrame extends JFrame{
  public MyFrame(){
    setTitle("鼠标事件示例程序");
    setSize(300, 200);
    addWindowListener(new WindowAdapter(){
  public void windowClosing(WindowEvent e){
    System.exit(0);
    }
  } );
    Container contentPane = getContentPane();
    contentPane.add(new MyPanel());
  }
}
public class MouseEvt{
    public static void main(String[] args){
        JFrame frame = new MyFrame();
        frame.setVisible(true);
  }
}
///

简要说明

在MyPanel的构建器中添加了鼠标适配器来监听鼠标点击数和位置。也添加了运动监听器来处理移动和拖放操作。  

分享到:
评论

相关推荐

    Qt全局鼠标、键盘事件监听器库

    【Qt全局鼠标、键盘事件监听器库】是一个用于在Windows和Linux系统上实现跨平台的全局鼠标和键盘事件捕获的库。这个库基于流行的Qt框架,为开发者提供了一个便捷的方式来监听并处理系统的输入事件,无论是来自应用...

    键盘监听器与鼠标监听器借鉴.pdf

    总结来说,键盘监听器是Java AWT和Swing GUI编程中一个重要的部分,它允许程序员根据用户的键盘操作来执行相应的功能。通过理解和使用`KeyListener`,开发者可以创建更具有交互性的应用程序,响应用户的键盘输入,...

    Java监听键盘鼠标全局事件[定义].pdf

    Java监听键盘鼠标全局事件是指使用Java语言来监听和处理键盘和鼠标事件的技术。这项技术广泛应用于游戏开发、自动化测试、屏幕阅读器等领域。下面是Java监听键盘鼠标全局事件的详细知识点: 一、Java Native ...

    C# Hock 全局监听程序外的键盘和鼠标的事件

    "C# Hook 钩子"就是这样一个专题,它允许开发者创建一个全局监听程序,来捕获并处理系统的键盘和鼠标事件。 钩子是一种机制,由Windows操作系统提供,它允许应用程序设置一个或多个“钩子”,以便拦截特定类型的...

    鼠标及键盘监听实现

    "鼠标及键盘监听实现"这个项目正聚焦于这一关键功能,它允许开发者跟踪并响应用户的鼠标操作和键盘输入。下面将详细阐述相关知识点。 首先,我们要理解的是什么是鼠标监听。在计算机编程中,鼠标监听通常涉及到事件...

    Node.js-Node.js全局键盘和鼠标侦听器

    1. **全局键盘监听**:监听所有窗口的键盘事件,无论焦点在哪个应用上。例如,你可以创建一个热键启动应用的工具,或者记录用户输入的行为分析。 2. **全局鼠标监听**:捕获鼠标的点击、移动、滚动等事件,即使焦点...

    VISUAL C++ VC 锁住键盘和鼠标 达到禁用电脑的目的

    在IT行业中,有时出于安全或特定需求,我们可能需要暂时禁用用户的键盘和鼠标操作,例如在演示软件或测试环境中。本主题将深入探讨如何使用Visual C++ (VC++) 实现这一功能,主要关注如何编写C++代码来锁定键盘和...

    易语言记录键盘鼠标录制源码.zip

    《易语言记录键盘鼠标录制源码》是一款基于易语言5.93版本开发的软件,其主要功能是实现对用户键盘输入和鼠标操作的记录。该软件的核心技术是利用DLL(动态链接库)中的接口来捕获并记录系统级的键盘和鼠标事件,...

    C++全局键盘鼠标Hook

    这种技术常用于应用程序中需要监听用户输入的情况,例如游戏外挂、键盘记录器或者辅助工具。 首先,我们需要定义一个处理键盘和鼠标事件的回调函数,它需要符合Windows定义的特定钩子函数原型。对于键盘Hook,回调...

    键盘鼠标记录器

    它通过监听系统底层的键盘和鼠标事件,将这些事件转化为可读的记录,存储为日志文件或实时传输到指定服务器。这种技术的核心在于对操作系统事件驱动机制的理解和利用,能够在不影响用户正常操作的情况下,悄无声息地...

    易语言鼠标键盘使用记录器

    《易语言鼠标键盘使用记录器》是一款基于易语言开发的软件,主要功能是记录用户的鼠标和键盘活动。这款工具能够捕获用户在计算机上的输入行为,包括点击、滚动、按键等,为开发者或测试人员提供了方便的数据记录和...

    jnativehook, 用于Java的全局键盘和鼠标侦听器.zip

    jnativehook, 用于Java的全局键盘和鼠标侦听器 JNativeHook是一个为Java提供全局键盘和鼠标侦听器的库。 这将允许你监听全局快捷方式或者鼠标运动,否则使用纯Java就不可能。 为了完成这项任务,JNativeHook利用平台...

    QT linux下获取键盘和鼠标事件

    在QT框架下开发Linux应用程序时,获取键盘和鼠标事件是常见的需求,这有助于实现用户交互和界面控制。本文将深入探讨如何在Linux环境下利用QT库来捕获和处理这些事件。 首先,QT是一个跨平台的应用程序开发框架,...

    java一个监听器的例子

    在Java Swing中,有多种类型的监听器,例如动作监听器(ActionListener)、鼠标监听器(MouseListener)、键盘监听器(KeyListener)和窗口监听器(WindowListener)等。例如,如果我们想要在用户点击按钮时执行某些...

    全局鼠标键盘连点器

    全局监听意味着该工具可以在任何应用程序窗口下工作,无论用户当前在哪个程序上操作,只要激活了连点器,它都能捕捉到键盘和鼠标的输入。这对于需要频繁点击的游戏场景非常有用,比如农场模拟、点击类冒险游戏或者...

    监听器.zip

    在Java GUI编程中,AWT和Swing提供了多种类型的监听器,如动作监听器(ActionListener)、鼠标监听器(MouseListener)、键盘监听器(KeyListener)以及组件监听器(ComponentListener)等。这些监听器允许我们对...

    基于Electron的鼠标键盘自动点击和记录回放软件

    标题中的“基于Electron的鼠标键盘自动点击和记录回放软件”揭示了这款软件的核心技术是Electron,它是一款用于构建跨平台桌面应用的框架,结合JavaScript、HTML和CSS等Web技术来创建桌面应用程序。软件的主要功能...

    怎样捕捉鼠标键盘按键

    总的来说,捕获键盘和鼠标按键是通过操作系统提供的API或第三方库实现的,涉及到的操作包括设置事件监听器、定义回调函数以及解析接收到的事件信息。了解这些基本原理和方法,你就能轻松实现自己的键盘鼠标按键捕捉...

    鼠标键盘记录器

    【鼠标键盘记录器】是一种特殊的软件工具,设计用于追踪并记录用户在计算机上进行的所有键盘和鼠标活动。这种工具的主要功能在于捕捉用户输入的信息,包括敲击的按键、点击的位置以及浏览的网页等,以便于事后回放或...

Global site tag (gtag.js) - Google Analytics