gpt4 book ai didi

java - 检查shift键是否被按下

转载 作者:行者123 更新时间:2023-12-04 05:50:55 25 4
gpt4 key购买 nike

我正在编写一个应用程序,它应该在启动时检查是否按下了 shift 键。为此,我创建了一个负责该任务的小类:

import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;

public class KeyboardListener {

private static boolean isShiftDown;

static {
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(
new KeyEventDispatcher() {
public boolean dispatchKeyEvent(KeyEvent e) {
isShiftDown = e.isShiftDown();
return false;
}
});
}

public static boolean isShiftDown() {
return isShiftDown;
}

}

但是,如果在应用程序启动时已经按下了 shift 键,这似乎不起作用。以下检查始终执行 else 情况。
if (KeyboardListener.isShiftDown()) {
// ...
} else {
// this always gets executed
}

有没有办法检查是否在应用程序启动时按下了 shift 键?我知道使用 WinAPI 可以做到这一点,但我更喜欢 Javaish 的做法。

提前致谢!

最佳答案

我将其描述为 hack,但它确实解决了问题(有一些缺点),所以我想我会提到它作为一种可能性。

您可以使用 Robot类来模拟您的应用程序不关心的某个键的击键(可能是功能键之一)。在您注册 KeyListener 后立即运行此代码.您会看到一个关键事件,它会告诉您是否 Shift下来了。

警告:这对系统来说就像 F24 (或您选择的任何键)实际上已被用户按下和释放。这可能会产生意想不到的副作用。

    (new Thread( )
{
@Override
public void run( )
{
try
{
java.awt.Robot robot = new Robot();
robot.delay( 100 );
robot.keyPress( KeyEvent.VK_F24 );
robot.keyRelease( KeyEvent.VK_F24 );
}
catch ( Exception e )
{
}
}
}).start( );

关于java - 检查shift键是否被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10064296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com