java 获取键盘点击_java-如何全局获取当前键盘状态? (即,无论...

您可以做的就是实现KeyListener接口,并为所有您感兴趣的键提供状态.

例如,如果您想检查屏幕快照上是否按下了箭头键,则可以实现此KeyListener接口并重写keyPressed()和keyReleased()方法,并将您感兴趣的那些键的状态设置为keyPressed或调用keyReleased.取决于事件.这样,当屏幕截图出现时,您只需读取这些键的状态即可

如果您需要这种解决方案是全球性的,则无论应用程序如何关注,都可以在C中编写一个小钩子,该钩子可以与Java Native Interface集成以侦听关键事件. Java不允许您在不将侦听器附加到组件并且该组件具有焦点的情况下侦听关键事件.看一下JNativeHook.

如果仅在应用程序具有焦点但在每个组件上都需要它时,则可以将监听器优雅地附加到所有组件上,或者可以编写自己的自定义KeyEventDispatcher并将其注册在KeyBoardFocusManager上.这样,只要您的应用程序具有焦点,无论具有特定焦点的组件如何,您都可以捕获所有键盘事件.看到:

public class YourFrame extends JFrame {

public YourFrame() {

// Finish all your layout and add your components

//

// Get the KeyboardFocusManager and register your custom dispatcher

KeyboardFocusManager m = KeyboardFocusManager.getCurrentKeyboardFocusManager();

m.addKeyEventDispatcher(new YourDispatcher());

}

private class YourDispatcher implements KeyEventDispatcher {

@Override

public boolean dispatchKeyEvent(KeyEvent e) {

if (e.getID() == KeyEvent.KEY_TYPED) {

// Do something to change the state of the key

} else if (e.getID() == KeyEvent.KEY_PRESSED) {

// Do something else

}

return false;

}

}

public static void main(String[] args) {

YourFrame yF = new YourFrame();

yF.pack();

yF.setVisible(true);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值