简体   繁体   English

Java AWT鼠标事件

[英]Java AWT mouse events

I have an applet that makes use of the AWT event model. 我有一个使用AWT事件模型的小程序。 It has a boolean that says if the left button is pressed or not. 它有一个布尔值,指示是否按下了左按钮。 Here is a sample code: 这是一个示例代码:

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
}

But it seems as if the left button is never released, even after you actually do so. 但是似乎左键从未释放过,即使实际上已经释放了它也是如此。 What could be the problem? 可能是什么问题呢?

Method mouseClicked will be called after mouseReleased method so value of isLgetButtonPressed will be true. 方法mouseClicked将在mouseReleased方法之后调用,因此isLgetButtonPressed的值为true。 You have to use MouseEvent.getButton() method to check which mouse button is pressed. 您必须使用MouseEvent.getButton()方法来检查按下了哪个鼠标按钮。

The fundamental in this is incorrect, 根本上是不正确的

These are the mouse events, 这些是鼠标事件,

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

So, when you handle the click event that means mouse is clicked and released. 因此,当您处理click事件时,意味着鼠标被单击并释放。

So i think you have to use mousepressed instead of clicked. 因此,我认为您必须使用mousepressed而不是clicked。

MouseEvent MouseEvent

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM