Java 是否有无运动鼠标侦听器?
我有一个地图小程序,鼠标后面有一个JLabel,每当鼠标经过一个城市时,JLable就会显示城市和人口的名称 我使用mouseMotionListener的MouseMoved方法来实现这一点,但我希望只有当鼠标在城市上方静止几秒钟时,标签才会出现 我不知道这是否是因为我已经在这段代码上工作了好几天了,但是我似乎想不出用MouseMoved方法解决这个问题的方法,我尝试过使用计时器,但这对我来说不起作用(可能是我做错了,因为我的大脑被烧坏了) 那么,有没有一个鼠标监听器可以让鼠标保持静止?或者你有什么建议吗 这或多或少是我得到的Java 是否有无运动鼠标侦听器?,java,swing,Java,Swing,我有一个地图小程序,鼠标后面有一个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·凯特林说:“解决问题的办法很简单。”有时,重新定义问题会让我们找到简单的办法。