Java 是否有无运动鼠标侦听器?

Java 是否有无运动鼠标侦听器?,java,swing,Java,Swing,我有一个地图小程序,鼠标后面有一个JLabel,每当鼠标经过一个城市时,JLable就会显示城市和人口的名称 我使用mouseMotionListener的MouseMoved方法来实现这一点,但我希望只有当鼠标在城市上方静止几秒钟时,标签才会出现 我不知道这是否是因为我已经在这段代码上工作了好几天了,但是我似乎想不出用MouseMoved方法解决这个问题的方法,我尝试过使用计时器,但这对我来说不起作用(可能是我做错了,因为我的大脑被烧坏了) 那么,有没有一个鼠标监听器可以让鼠标保持静止?或者你

我有一个地图小程序,鼠标后面有一个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("");
   }
}
public void mouseMoved(MouseEvent evt){
int x=evt.getX();
int y=evt.getY();
布尔城市=假;
mouseover.setBounds(x+20,y-10200,20);//mouseover是一个JLabel

对于(int i=0;i使用Java javax.swing.Timer。每次鼠标移动时,重置计时器。当计时器熄灭时,鼠标“静止”只要你的计时器设置好。

不相关的建议:一旦你找到了相关的城市,就不要检查所有剩余的城市。哇,这是一个如此简单的解决方案,在我尝试更复杂的方法时,它不知怎的让我忘记了lol。一旦你知道了“秘密”,谢谢你轻松,但当你看错地方时,这不是直观的。+1.查尔斯·F·凯特林说:“解决问题的办法很简单。”有时,重新定义问题会让我们找到简单的办法。