Java AWT мышиные события - PullRequest
       10

Java AWT мышиные события

1 голос
/ 16 декабря 2011

У меня есть апплет, который использует модель событий 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
}

Но кажется, что левая кнопка никогда не отпускается, даже после того, как вы действительно это сделаете.В чем может быть проблема?

Ответы [ 2 ]

4 голосов
/ 16 декабря 2011

Основное в этом неверно,

Это события мыши,

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

Итак, когда вы обрабатываете событие click, это означает, что мышь щелкают и отпускают.

Так что я думаю, что вы должны использовать нажатие мышью вместо нажатия.

MouseEvent

4 голосов
/ 16 декабря 2011

Метод mouseClicked будет вызван после mouseReleased метода, поэтому значение isLgetButtonPressed будет истинным.Вы должны использовать метод MouseEvent.getButton(), чтобы проверить, какая кнопка мыши нажата.

...