【问题标题】:Java AWT mouse eventsJava AWT 鼠标事件
【发布时间】:2012-01-21 17:14:37
【问题描述】:

我有一个使用 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
}

但似乎左键从未释放过,即使在您实际释放之后也是如此。可能是什么问题?

【问题讨论】:

  • 谁反对这个——这个网站对新用户很友好。尤其是对于那些真正提出有意义的有意义问题的人来说,有足够的信息是格式正确的。你怎么了?
  • 这个问题真的和Input Manager for Java error不一样吗? (顺便说一句,我不是反对者。)
  • 同样的想法,但压缩成更小的格式

标签: java mouseevent awt


【解决方案1】:

这里面的基本原理是不正确的,

这些是鼠标事件,

MousePressed ->    a mouse button is pressed
MouseReleased ->   a mouse button is released
MouseClicked ->   a mouse button is clicked (pressed and released)

所以,当你处理点击事件时,意味着鼠标被点击并释放。

所以我认为你必须使用鼠标按下而不是点击。

MouseEvent

【讨论】:

    【解决方案2】:

    方法mouseClicked 将在mouseReleased 方法之后调用,因此isLgetButtonPressed 的值为true。您必须使用MouseEvent.getButton() 方法来检查按下了哪个鼠标按钮。

    【讨论】:

    • 我忘记在此处添加该部分但已考虑(getButton() 方法)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多