События мыши Java игнорируются, когда мышь движется? - PullRequest
8 голосов
/ 20 января 2012

Недавно я работал над 2D-игрой в Java и сейчас пытаюсь заставить систему обработки событий работать правильно. Я пытался щелкнуть мышью, чтобы запустить анимацию, и она работала, пока я не попытался двигать мышь во время щелчка. На данный момент ничего не происходит вообще. Я использую классы mouselistener и mousemotionlistener, и проблема все еще сохраняется. Вот код от Main:

public class ML extends MouseAdapter{
   public void mouseClicked(MouseEvent m){
       if(m.getButton()==MouseEvent.BUTTON1)
       guns.playOnce();
   }
   public void mouseReleased(MouseEvent m){
       if(m.getButton()==MouseEvent.BUTTON1);
   }

Он вызывает класс аниматора для однократного воспроизведения набора изображений и остановки. Аниматор работал отлично, прежде чем я включил события мыши. Я не могу понять, почему это не сработало бы во время движения мыши, если не было заданного действия, которое нужно выполнить во время этого движения мыши. (Если есть очевидное решение, прошу прощения, я начал Java не так давно.)

1 Ответ

7 голосов
/ 20 января 2012

В Java щелчок мыши регистрируется только в том случае, если мышь нажимают и отпускают, не перемещая мышь вообще.Это трудно для большинства пользователей, поэтому большинство элементов пользовательского интерфейса (например, кнопки) реагируют на события нажатия и отпускания мыши и игнорируют «щелчок».

Для кнопки, тем не менее, лучше добавитьActionListener к нему.Затем сама кнопка прослушивает события мыши и решает, когда она была нажата.

...