【发布时间】:2014-04-30 19:31:32
【问题描述】:
我正在尝试创建一个简单的 Java 小程序,它既可以检测鼠标在小程序中的位置,又可以检测 shift 键是否被释放或按下。但是,当我添加 KeyListener 时,程序会忽略 mouseMove 事件。如何在使用 KeyListener 的同时让 mouseMove 事件正常工作?
public class Test extends java.applet.Applet implements java.awt.event.KeyListener {
String message;
int moveX, moveY;
public Test() { this.addKeyListener(this); }
public void init() {
message = "";
moveX = moveY = 0;
}
public void paint(java.awt.Graphics g) {
new Test();
g.drawString(message,15,15);
g.drawString("(" + moveX + "," + moveY + ")",900,630);
}
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_SHIFT)
message = "Shift key pressed";
repaint();
}
@Override
public void keyReleased(java.awt.event.KeyEvent e) {
message = "Shift key released";
repaint();
}
@Override
public void keyTyped(java.awt.event.KeyEvent e) {}
public boolean mouseMove(java.awt.Event e, int x, int y) {
moveX = x;
moveY = y;
repaint();
return true;
}
}
【问题讨论】:
-
你只实现了一个keylistener
-
但它执行一个动作,对吧?如果按下 shift 键,则显示会改变。
-
KeyListener只会在它注册到的组件是可聚焦的并且具有键盘焦点时引发事件
标签: java applet mouseevent keyboard-events