0 0

swing 全局键盘监听事件3


final JFrame j = new JFrame();
j.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                System.out.println("this evt:"+evt.getKeyChar());
            }
        });

貌似打印不出我想要的值,求大大们指点~
2010年8月10日 08:47

4个答案 按时间排序 按投票排序

0 0

采纳的答案

全局键盘监听事件需要注册的吧


class ImplAWTEventListener implements AWTEventListener {
        @Override
        public void eventDispatched(AWTEvent event) {
              if (event.getClass() == KeyEvent.class) {
                // 被处理的事件是键盘事件.
                KeyEvent keyEvent = (KeyEvent) event;
                if (keyEvent.getID() == KeyEvent.KEY_PRESSED) {
                    //按下时你要做的事情
                    keyPressed(keyEvent);
                } else if (keyEvent.getID() == KeyEvent.KEY_RELEASED) {
                    //放开时你要做的事情
                    keyReleased(keyEvent);
                }
            }
        }
        private void mousePressed(MouseEvent event) {}
        private void keyReleased(KeyEvent event) {}
}


你的窗口类中可以这样添加,可以在初始化UI组件方法中或写在构造函数中
Toolkit tk = Toolkit.getDefaultToolkit();
        tk.addAWTEventListener(new ImplAWTEventListener(), AWTEvent.KEY_EVENT_MASK);

2010年8月10日 10:02
0 0

C#开源的键盘监听器:http://www.haonanji.cn/214.html。

2016年2月16日 11:52
0 0

C#开源的键盘监听器:http://www.haonanji.cn/214.html。

2016年2月16日 11:52
0 0

用你上面的方法确实不能达到效果.你试试下面两种方法,之前写的.
1. Toolkit.getDefaultToolkit().addAWTEventListener(listener,eventMask);
这个方法注册全局的监听机制,无论哪个窗口。里面注册为weakHashmap,应该不用考虑垃圾回收问题。因为是全局的,不建议采用。
2. 拦截每个component自己的事件。
正常来说,如果在textbox里面打字,事件不会交给window处理。enableInputMethods(true)可以帮忙。
enable以后调用getInputContext(),取得InputContext处理。
注意,InputContext的dispatchEvent(AWTEvent)会接到各种消息,感兴趣的getID()有以下三个:
    MouseEvent.MOUSE_CLICKED
    MouseEvent.MOUSE_WHEEL
    KeyEvent.KEY_TYPED

2010年8月10日 10:05

相关推荐

    鼠标键盘监听+jar

    `JNativeHook`是一个跨平台的本地钩子库,允许Java应用程序监听全局键盘和鼠标事件,即使焦点不在Java窗口上也能捕获。 `jnativehook`这个文件可能是项目中使用的JNativeHook库的组成部分,它可能包含了库的源代码...

    pyHook+swing

    pyHook是Python的一个库,主要用于在Windows操作系统上全局键盘和鼠标事件的监听。Swing则是Java的一个组件库,用于构建桌面应用程序。 **pyHook**: pyHook是Python中的一个第三方库,它允许开发者捕获系统级的...

    java 监听windows系统热键组合

    在Java编程环境中,有时我们需要实现一个功能,即监听Windows系统的热键组合,以便在用户按下特定的键盘快捷键时执行相应的操作。这个功能在开发桌面应用程序时非常有用,特别是使用Swing作为UI框架的时候。标题提到...

    JAVA屏蔽键盘事件,键盘按键失效.后台也行生效

    需要注意的是,这种全局键盘事件屏蔽可能涉及安全问题,因为它可以阻止用户与操作系统交互。因此,只有在确保合法性和必要性的前提下,才应使用这种方法。同时,由于这种方法涉及到系统级别的操作,可能会因操作系统...

    java 实现仿qq截图效果的工具jar,并支持全局热键

    在本项目中,由于Java标准库不支持全局键盘监听,我们需要借助JNI调用本地系统API来实现这一功能。JNI使得Java代码可以调用C/C++编写的动态链接库(dll或so文件),这样我们就能利用操作系统级别的键盘事件。 2. **...

    JAVA swing基本控件实例

    JTree还支持监听事件,如节点展开或选择,以实现与用户的交互。 **ToolBar** 是Swing中的组件,用于创建工具栏,常见于各种应用中。`components-ToolBarDemoProject.zip`和`components-ToolBarDemo2Project.zip`将...

    swing实现的俄罗斯方块 学习java基础很好 包含面向对象和设计模式

    例如,用户键盘输入控制方块的移动和旋转,这就需要添加键盘事件监听器。同时,Swing组件如JFrame、JPanel可以用来构建游戏界面,使得用户能够直观地看到游戏状态。 此外,为了实现游戏的动画效果,开发者可能还会...

    swing demo1

    此外,Swing还支持多种事件类型,如ItemEvent(针对复选框和单选按钮)、KeyEvent(键盘事件)和MouseEvent(鼠标事件)等。 在Swing中,组件的布局管理是非常关键的一部分。Java提供了FlowLayout、BorderLayout、...

    swing rich client

    GlassPane是窗口顶层的一个透明面板,可以用于全局的鼠标和键盘事件监听,也可以用于在窗口上添加自定义的视觉效果。 压缩包中的"GraphicsFundamentals"可能包含了一些关于Swing图形基础的示例代码,这些代码可能...

    Swing实例下载.rar

    事件处理在Swing中至关重要,通过添加事件监听器,可以响应用户的操作。例如,ActionListener用于处理按钮点击,MouseListener和MouseMotionListener用于处理鼠标事件,KeyListener则处理键盘事件。 自定义UI设计是...

    Java Swing编写的贪吃蛇小游戏.zip

    7. 事件处理:Java Swing中的事件模型是基于观察者模式的,你需要为各种组件添加事件监听器来响应用户的操作。 8. 帧率控制:为了使游戏看起来流畅,你需要控制每秒绘制的帧数。这通常通过使用`javax.swing.Timer`...

    Java项目:贪吃蛇游戏(java+swing)

    - **键盘监听**:使用KeyListener接口来捕获用户键盘输入,控制蛇的移动方向。 3. **游戏逻辑** - **游戏循环**:游戏的主循环负责更新屏幕,检查碰撞(蛇身、边界或食物),并根据结果改变蛇的状态。 - **坐标...

    java 实现qq截图效果的截图jar,并直接全局热键

    这些库允许Java程序注册系统级别的键盘监听器,使得即使在应用程序未处于焦点时也能响应特定按键组合。 5. **主类(Main.java)**: 提供的`main.java`文件是程序的入口点,它通常包含了如何启动应用和调用相关...

    java实现的屏幕截取软件

    在Java中,可以注册键盘监听器(KeyListener)到应用程序的顶级窗口,或者使用AWT的KeyboardFocusManager来捕获全局的键盘事件。当特定的组合键被按下时,事件监听器会触发相应的处理函数,调用截屏逻辑。 在选择...

    JAVA 实现《俄罗斯方块升级版》游戏

    游戏主界面采用Swing组件开发,并且向其注册监听器,以实现各种控制功能,综合游戏窗体的设计,其上至少需要注册三个监听器,分别是动作监听器(ActionListener)、键盘监听器(KeyListener)、选项监听器(ItemListener)...

    组件模型与双事件处理线程

    在Java Swing中,GlassPane是一个特殊类型的容器,位于所有其他组件之上,可以用来全局捕获鼠标和键盘事件,或者作为透明覆盖层显示加载指示器或临时遮罩。 总的来说,理解组件模型和双事件处理线程对于构建高性能...

    在Windows下实现Java程序的屏幕鼠标键盘监控.pdf

    Java通过AWT(Abstract Window Toolkit)和Swing库提供了多种事件监听接口,如MouseMotionListener和KeyListener,用于捕获用户的输入事件。然而,这些接口在功能上存在一定的限制,特别是在跨平台的一致性和性能...

    jintellitype-1.3.1(java注册快捷键使用)

    对于其他操作系统,如Linux或macOS,开发者可能需要寻找其他解决方案,例如使用Java的AWT或Swing框架提供的全局事件监听机制。 总的来说,JIntelliType为Java开发者提供了一种简单的方式来注册和处理全局快捷键,...

    java五子棋课件设计

    - **设置键盘监听器**:通过 `addKeyListener` 方法为窗口添加键盘监听器,以便根据用户的键盘输入执行相应操作。 - **keyPressed 方法**:该方法用于处理不同的键盘事件。 - **处理 Enter 键**:判断当前玩家并...

Global site tag (gtag.js) - Google Analytics