请问鼠标悬浮在按钮上方时,如何使按钮连续变化两张图片?

问题描述:

[code="java"]
logbt.setRolloverIcon(icon3);
logbt.setRolloverIcon(icon4);

[/code]

这里有icon3,icon4两张图片,如何做到鼠标悬浮在按钮上方时,使按钮依次变化两张图片?

为了保证线程安全,你可以使用SwingUtilities类的invokeLater()或invokeAndWait()方法:
[code="java"]
SwingUtilities.invokeLater(new Runnable() {

public void run() {

try{

Thread.sleep(1500);

} catch (Exception e) {

}

logbt.setRolloverIcon(icon4);

}

});
[/code]

你这是啥里面的按钮?Android 还是 HTML?

[quote]使按钮依次变化两张图片[/quote]
是不是说,只要鼠标在上面,那么就一直不停地在这两张图片之间进行切换,还是只要切换一次就可以了?

你有没有调用
[code="java"]setRolloverEnabled(true);[/code]

如果还是不行,你试试给这个按钮加个鼠标监听器,即调用
[code="java"]addMouseListener()[/code]

[quote]我已经成功的实现了悬浮时候图像变化,可是不知道如何实现连续变化两次。 [/quote]
比如,你原先的是A,你想当鼠标移至按钮上面的时候,背景先变为 B,再变为 C,是吧。
看看你现在的实现,是不是直接从A变为C了?

[quote]对啊,没法连续,请问如何实现啊?[/quote]
其实你设置背景为B的那个操作还是被执行的,不过只是一瞬间的事,立马被C给取代了,你要想看到先被设置成B再被设置成C的效果的话,可以在设置背景为B之后,另起一个线程,这个线程的作用仅是:睡眠一段时间(时间你自己决定),之后,去改变按钮的背景。这样做即可看到,背景先是被设置为了B再被设置为C的过程,但从B至C的变化之间,没有任何渐变效果的。

[quote]我是这样做的 [/quote]
不能这么做的,你需要新起一个线程:
[code="java"]
new Thread(new Runnable() {
public void run() {
try{
Thread.sleep(1500);
} catch (Exception e) {
}
logbt.setRolloverIcon(icon4);
}
}).start();
[/code]
这个方法虽然可行,但不是安全的,因为swing本身就是非线程安全的,所以一般绘制UI的操作需要放在主线程中。