带有更新图像的 JLabel 刷新图标



我正在尝试进行图像处理实验。基本上,我有一个由计时器不断更新的图像,并在JLabel中显示该图像。

我的问题是 JLabel 不会刷新图像。

这是我的计时器代码:

Timer timer = new Timer(200, new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            count++;
            System.out.println("timer");
            System.out.println(filename);
            ImageIcon icon = new ImageIcon(filename);
            label = new JLabel();
            label.setIcon(icon);
            label.setText(""+count);
            panel = new JPanel();
            panel.add(label);
            frame.getContentPane().removeAll();
            frame.getContentPane().add(panel);
            frame.repaint();
            frame.validate();
            try{
                FileWriter fstream;
                fstream = new FileWriter(filename,true);
                BufferedWriter out = new BufferedWriter(fstream);
                out.write("text to append");
                out.close();
            }catch (Exception ex){
                System.err.println("Error: " + ex.getMessage());
            }
        }
    });

其中文件名是我的图像的路径。

显示图像,但 JLabel 从不刷新我的图像。我测试了我的代码,如果我在两个不同的图像之间切换,就可以工作了......

编辑:

我通过每次创建最后一个图像并使用时间戳重命名来重复来解决。

label = new JLabel();
label.setIcon(icon);
label.setText(""+count);
panel = new JPanel();
panel.add(label);
frame.getContentPane().removeAll();
frame.getContentPane().add(panel);
frame.repaint();
frame.validate();

将所有这些替换为以下内容:

label.setIcon(icon);

如果标签此时不可见,请将其声明为外部类的类属性或与frame处于同一级别(在该代码段中显然可以访问)。

最新更新