gpt4 book ai didi

java - 如何使用 KeyAdapter 检测 CTRL+SHIFT+ANY_KEY?

转载 作者:行者123 更新时间:2023-11-29 04:34:20 25 4
gpt4 key购买 nike

这是我的代码:

        tabbedPane.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {

CheckShortcut controlShortcut = (key) -> {
return (evt.getKeyCode() == key) && ((evt.getModifiers() & KeyEvent.CTRL_MASK) != 0);
};

CheckShortcut controlShiftShortcut = (key) -> {
return (evt.getKeyCode() == key) && ((evt.getModifiers() & KeyEvent.CTRL_MASK & KeyEvent.SHIFT_MASK) != 0);
}; // Does not work <<<<<

if (controlShortcut.f(KeyEvent.VK_N)) {
createNewFile();
} else if (controlShortcut.f(KeyEvent.VK_O)) {
openFile();
} else if (controlShortcut.f(KeyEvent.VK_S)) {
save();
} else if (controlShiftShortcut.f(KeyEvent.VK_S)) {
saveAs();
} else if (controlShortcut.f(KeyEvent.VK_Q)) {
System.exit(0);
} else if (controlShortcut.f(KeyEvent.VK_W)) {
MainFrame.toggleFrame(qrWebcamFrame);
} else if (controlShortcut.f(KeyEvent.VK_C)) {
MainFrame.toggleFrame(comandaCreationFrame);
} else if (controlShortcut.f(KeyEvent.VK_P)) {
if (accessPasswordFrame("Senha de administrador",
"Login: ", "Senha de administrador inválida.",
ADMIN_TYPE)) {
MainFrame.toggleFrame(passwordFrame);
}
}

}
});

controlShortcut 完美运行。然而,当我将 KeyEvent.SHIFT_MASK 添加到测试中时,它不起作用。另外,当我这样做时:

        CheckShortcut controlShiftShortcut = (key) -> {
return (evt.getKeyCode() == key) && ((evt.getModifiers() & KeyEvent.CTRL_MASK) != 0) && ((evt.getModifiers() & KeyEvent.SHIFT_MASK) != 0);
};

它也不行。我不明白为什么,因为我只是添加相同的测试。

最佳答案

这不是按位运算符的工作方式。 KeyEvent.CTRL_MASK 和 KeyEvent.SHIFT_MASK 总是给出 0,因为您是 AND-ing 不同的掩码。

您要做的是使用 OR 为两者创建一个掩码:

int down = KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK;
if ((e.getModifiersEx() & down) == down && (e.getKeyCode() == KeyEvent.VK_D))
System.out.println(true);

这将打印

true

仅当按下 ctrl+shift+D 时。

如果你写

(e.getModifiersEx() & down) != 0

它将检查是否按下了 任何(或两者)ctrlshift

请注意,您应该将 getModifiersExX_DOWN_MASK 一起使用,而不是将 getModifiersX_MASK 一起使用。

关于java - 如何使用 KeyAdapter 检测 CTRL+SHIFT+ANY_KEY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353939/

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