java jLabel图像不会更新

时间:2014-08-01 07:57:15

标签: java image netbeans jlabel

我正在创建一个反馈标签,显示用户在文件对话框中选择的图片。

选择图片文件的那一刻,标签会将自身更新为用户点击过的图片。

第一次选择图片时效果很好,但是当第二次选择另一张图片时,它仍然是第一张图片。

代码:

 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()函数后,目录图片会更新。因此,覆盖文件不是问题。文件被正确覆盖,为什么它仍然显示上一张图像?是否有缓存或我需要清除的东西?

感谢。

1 个答案:

答案 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读取文件。读取图像并将其打印到标签上。