我正在创建一个反馈标签,显示用户在文件对话框中选择的图片。
选择图片文件的那一刻,标签会将自身更新为用户点击过的图片。
第一次选择图片时效果很好,但是当第二次选择另一张图片时,它仍然是第一张图片。
代码:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
//browse button
FileDialog fd = new FileDialog(this, "Choose a file", FileDialog.LOAD);
fd.setDirectory("C:\\");
fd.setFile("*.jpg"); // jpg files only
fd.setVisible(true);
String filename = fd.getFile();
if (filename == null) {
System.out.println("You cancelled the choice");
} else {
savePicture("temp"); // save it in temp.jpg. This overwrites any existing picture.
ImageIcon imgThisImg = null;
imgThisImg = new ImageIcon(absfilePath+ "/temp.jpg");
jLabel7.setIcon(null);
jLabel7.setIcon(imgThisImg);
jLabel7.revalidate();
jLabel7.repaint();
}
在调试期间,执行savePicture()函数后,目录图片会更新。因此,覆盖文件不是问题。文件被正确覆盖,为什么它仍然显示上一张图像?是否有缓存或我需要清除的东西?
感谢。
答案 0 :(得分:0)
将ImageIO用于读取文件效果最佳。可以使用以下行来实现。
jLabel7.setIcon(new JLabel(new ImageIcon(ImageIO.read(new File("C:\\Users\\Cameron Gillespie\\Documents\\NetBeansProjects\\OnlineCabsClient\\src\\images\\taxiBackground.png")))));
您正在拿标签然后设置图标。创建新标签和ImageIcon。然后使用ImageIO读取文件。读取图像并将其打印到标签上。