我需要确定Shift键的当前状态,但是当我需要状态时我没有InputEvent对象.我需要像java.awt.Toolkit.getLockingKeyState(int)Shift 这样的东西,而不仅仅是锁定键VK_CAPS_LOCK.有没有办法我可以在不收听输入事件的情况下执行此操作,并在以后需要检查状态时存储for?
谢谢!
我认为如果您手头没有事件,就不可能获取 Shift 键的状态。甚至 java.awt.Toolkit.getLockingKeyState(int) 也使用本机代码来获取其信息。我确信您可以设计自己的事件跟踪器/存储等,但为了以防万一,这里有一个可能有用的小方法。您必须为其提供具有焦点的 AWT 组件。
public static boolean isShiftDown(Component c) throws AWTException {
final List<Boolean> res = new ArrayList<Boolean>();
final KeyListener listener = new KeyAdapter() {
@Override public void keyReleased(KeyEvent e) {
res.add(e.isShiftDown());
}
};
c.addKeyListener(listener);
new Robot().keyRelease(KeyEvent.VK_ALT);
try {Thread.sleep(50);} catch (InterruptedException e) {}
c.removeKeyListener(listener);
if (res.size() > 0)
return res.get(0);
throw new AWTException("Could not get shift key status.");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1612 次 |
| 最近记录: |