我正在尝试创建一个简单的Java applet,它可以检测applet中鼠标的位置,并检测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;
}
}
答案 0 :(得分:1)
如果要在点击时检查某人是否持有shift或其他键,MouseEvent会有一个名为getModifiers()
的方法
答案 1 :(得分:0)
我通过将mouseMove(java.awt.Event e, int x, int y)
替换为mouseMoved(java.awt.event.MouseEvent e)
来修复此问题,因此现在当鼠标的位置发生变化时坐标会发生变化,并且当按住Shift键时信息会发生变化。