是否有NO MOTION鼠标监听器?

时间:2011-03-11 00:59:16

标签: java swing

我有一个地图小程序,我有一个跟随鼠标的JLabel,只要鼠标越过一个城市,JLable就会显示城市名称和人口。

我使用了mouseMotionListener的MouseMoved方法,但是我希望只有当鼠标在城市上方停留几秒钟时标签才会存在。

我不知道是不是因为我现在一直在研究这段代码,但我似乎无法想到使用MouseMoved方法解决这个问题,我尝试使用定时器,但这对我没用(mayb我刚刚做了)这是错误的,因为我的大脑被烧坏了)

鼠标是否有鼠标监听器?或者你有什么建议吗?

这里或多或少是我得到的

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 个答案:

答案 0 :(得分:10)

使用Java javax.swing.Timer。每次鼠标移动时,重置计时器。当计时器熄灭时,只要您的计时器设置为,鼠标就会“静止”。