Java AWT鼠标事件
问题描述:
我有一个使用AWT事件模型的小程序。它有一个布尔值,表示是否按下左按钮。下面是一个示例代码:Java AWT鼠标事件
public class Game extends Applet implements MouseListener
{
boolean isLeftButtonPressed;
public void init()
{
addMouseListener(this);
isLeftButtonPressed = false;
}
public void paint(Graphics g)
{
g.drawString("Is Button Pressed: " + isLeftButtonPressed, 20, 20);
}
@Override
public void mouseClicked(MouseEvent e)
{
isLeftButtonPressed = true;
repaint();
}
@Override
public void mouseReleased(MouseEvent e)
{
isLeftButtonPressed = false;
repaint();
}
//Other MouseListener methods not listed but have to be implemented
}
但它好像左键永远不会释放,你居然这样做,即使之后。可能是什么问题呢?
答
在这个根本不正确,
这些都是鼠标事件,
MousePressed -> a mouse button is pressed
MouseReleased -> a mouse button is released
MouseClicked -> a mouse button is clicked (pressed and released)
所以,当你处理click事件,这意味着鼠标点击和释放。
所以我认为你必须使用mousepressed而不是点击。
答
方法mouseClicked
将在mouseReleased
方法后调用,所以isLgetButtonPressed的值将为true。您必须使用MouseEvent.getButton()
方法来检查按下了哪个鼠标按钮。
谁低估了这个 - 这个网站对新用户很友好。特别是对那些真正提出有意义的问题的人来说,有足够的信息是格式良好的。你怎么了? – 2011-12-16 04:32:33
这个问题实际上不同于[输入管理器的Java错误](http://*.com/questions/8529522/input-manager-for-java-error)? (我不是down-voter,顺便说一句) – 2011-12-16 04:40:37