我试图制作一个接收图像和imageicon作为参数的功能,将其变暗2秒并将其恢复正常,但我不能使计时器按计划工作。
public void blinkImage(Image e, ImageIcon f) {
ActionListener listener = new ActionListener(){
public void actionPerformed(ActionEvent event){
Graphics2D g2 = (Graphics2D) e.getGraphics();
g2.setColor(new Color(0, 0, 0, 50));
g2.fillRect(0, 0, f.getIconWidth(), f.getIconHeight());
}
};
Timer displayTimer = new Timer(2000, listener);
displayTimer.start();
displayTimer.stop();
}
OBS:此调用将在主窗口中成为setIcon(f),然后将其恢复正常。我的问题是:我应该在哪里调用start()和stop()?还有更好的方法吗?
感谢并抱歉英语不好。
答案 0 :(得分:3)
editors.get(i).setUserType(x)
不确定为什么你有两个参数。图像是图像中的图像吗?
在图像上绘画将是永久性的。因此,如果它与图标的图像相同,则无法将图标恢复为原始状态。
public void blinkImage(Image e, ImageIcon f)
在启动()Timer之后,您无法立即调用stop(),因为Timer永远不会触发。所以你需要的只是start()。
由于您只想使用Timer,所以只需使用:
displayTimer.start();
displayTimer.stop();
然后你不必担心停止计时器。
一种方法是创建具有两种状态的自定义图标。然后你可以切换图标的状态:
timer.setRepeats( false );