使用swing计时器和ImageIcons

时间:2015-11-05 16:17:39

标签: java swing timer awt

我试图制作一个接收图像和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()?还有更好的方法吗?

感谢并抱歉英语不好。

1 个答案:

答案 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 );