【发布时间】:2017-10-27 23:38:39
【问题描述】:
我想知道 MouseEvent 和 KeyEvent 如何同时工作。
假设一个 JFrame,JPanel。
我想知道在某些 MouseEvent 和 KeyEvent 示例中如何处理事件:
addKeyListener(new KeyAdapter() {
@Override public void keyReleased( KeyEvent evt) {
if ((evt.getKeyCode() == KeyEvent.VK_META) || (evt.getKeyCode() == KeyEvent.VK_WINDOWS)) {
//SomeEVENT
}
}
});
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent evt) {
if (SwingUtilities.isLeftMouseButton(evt)) {
System.out.println("Left button released.");
}
}
});
测试代码:
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
System.out.println("mouseClicked:");
if ((evt.getModifiers() & KeyEvent.VK_META) == KeyEvent.VK_META) {
System.out.println("KeyEvent.VK_META:");
}
if ((evt.getModifiers() & KeyEvent.VK_CONTROL) == KeyEvent.VK_CONTROL) {
System.out.println("KeyEvent.VK_CONTROL:");
}
System.out.println("KeyEvent.getKeyModifiersText(evt.getModifiers()):"
+ KeyEvent.getKeyModifiersText(evt.getModifiers()));
}
});
输出
mouseClicked:
mouseClicked:
mouseClicked:
mouseClicked:
mouseClicked:
没有检测到Button Control的问题!!!
但是只有在同时LeftButton + CMD 或WIN 时才执行该动作?
EDIT2
使用我之前的 TEST CODE 并按下 Shift + 单击,显示消息!!!
mouseClicked:
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌥+Button1
mouseClicked:
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌘+Button1
mouseClicked:
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌃+Button1
mouseClicked:
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌘+⌥+Button1
mouseClicked:
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌘+⌥+Button1
mouseClicked:
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌥+Button1
mouseClicked:
KeyEvent.getKeyModifiersText(evt.getModifiers()):⌘+⌥+Button1
mouseClicked:
KeyEvent.getKeyModifiersText(evt.getModifiers()):Button1
mouseClicked:
KeyEvent.VK_CONTROL:
KeyEvent.getKeyModifiersText(evt.getModifiers()):⇧+Button1
这是操作系统问题吗(我有 macOS Sierra)?
【问题讨论】:
-
MouseEvent支持按键扩展按键(alt、ctrl、meta、shift) -
@MadProgrammer 谢谢你的信息,但我不明白为什么不起作用。
-
做一些谷歌搜索。另外,查看 MouseEvent JavaDocs,特别是 isControlDown 之类的东西,所有答案都在那里
标签: java swing mouseevent macos-sierra keyevent