I am trying to make a special effect on my JButton: change its background color gradually when hover on and change back gradually as well when hover leave. I used Java Timer and tried many times. It seems I can only do the hover on part, what happened exactly? How should I fix it? Any help will be appreciated. Thanks.
b.addMouseListener(new java.awt.event.MouseAdapter() {
Timer timer;
public void mouseEntered(java.awt.event.MouseEvent evt) {
timer = new Timer();
TimerClass Tclass = new TimerClass(b,26,255,255,0,10);
timer.scheduleAtFixedRate(Tclass, 0, 30);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
timer.cancel();
timer = new Timer();
TimerClass Tclass = new TimerClass(b,26,255,255,100,-10);
timer.scheduleAtFixedRate(Tclass, 0, 30);
}
});
class TimerClass extends TimerTask {
JButton jbu;
int r,b,g, ic;
int p;
boolean gu;
TimerClass(JButton jb, int rr, int bb, int gg, int op, int ii) {
jbu=jb;
r=rr;b=bb;g=gg;
ic=ii;
p=op;
if(op==0){gu=true;}else{gu=false;}
}
@Override
public void run() {
jbu.setBackground(new Color(r,b,g,p));
if((p+ic<100)&&(p+ic>0)){
p+=ic;}else{cancel();}
}
}