есть слушатель мыши NO MOTION? - PullRequest
4 голосов
/ 11 марта 2011

У меня есть апплет карты, и у меня есть JLabel, следующий за мышью, всякий раз, когда мышь надвигается на город, JLable отображает название города и населения.

Я использую метод mouseMotionListener MouseMoved дляэто, но я хочу, чтобы метка была там только в том случае, если мышь остается на пару секунд над городом.

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

так что есть слушатель мыши длямышь стоит на месте?или у вас есть какие-либо рекомендации?

вот более или менее то, что я получил

public void mouseMoved(MouseEvent evt) {
   int x = evt.getX();
   int y = evt.getY();
   boolean aboveCity = false;
   mouseover.setBounds(x+20, y-10, 200, 20); //mouseover is a JLabel

   for (int i=0;i<cityCounter;i++){
      if (city[i].containsPoint(x,y){
         name = city[i].getName();
         population = city[i].getPopulation();
         aboveCity = true;
      }
   }
   if(aboveCity){
      mouseover.setText(name + ", " + population);
   }
   else{
      mouseover.setText("");
   }
}

1 Ответ

10 голосов
/ 11 марта 2011

Используйте Java javax.swing.Timer. Каждый раз, когда мышь движется, сбрасывать таймер. Когда таймер отключается, мышь остается "неподвижной" в течение всего времени, установленного для таймера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...