我有一个地图小程序,我有一个跟随鼠标的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("");
}
}
答案 0 :(得分:10)
使用Java javax.swing.Timer。每次鼠标移动时,重置计时器。当计时器熄灭时,只要您的计时器设置为,鼠标就会“静止”。