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

标签 java swing refresh jlabel imageicon

我正在尝试进行图像处理实验。 基本上我有一个由计时器不断更新的图像,我在 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 处于同一级别(在该代码段中显然可以访问)。

关于java - 带有更新图像的 JLabel 刷新图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445665/

相关文章:

java - Netbeans 无法显示设计按钮

java - Keylistener 不适用于 JPanel

refresh - 通过 TFS 2012 创建新构建定义时如何刷新流程部分中的构建流程模板

c# - ListView删除刷新不起作用?

java - 循环遍历多个数组 - 电话号码到单词生成器

java - 如何使用 gremlin (Apache TinkerPop) 在图数据库中搜索顶点?

Java通配符具有 super 意外的行为

java - 如何从 mat 对象获取整数数组,反之亦然

java - 使用 Java 的 KeyListener 与多个文本字段交互

Xamarin Forms Maps - 如何刷新/更新 map - CustomMap Renderer