我正在尝试进行图像处理实验。
基本上我有一个由计时器不断更新的图像,并在 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 从未刷新我的图像。
我测试了我的代码,如果我在两个不同的图像之间切换,它就会工作......
EDIT:
我通过每次创建最后一个图像时重复并使用时间戳重命名来解决。
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
(显然可以在该片段中访问)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)