下次如何显示文件选择器选择的下一个图像

时间:2013-11-08 12:14:36

标签: java swing jfilechooser imageicon filechooser

下次如何显示文件选择器选择的下一张图像  这是我的代码,有一个filechooser来选择文件并在jlabel上显示图像。  图像缩放到正确的大小,但当我尝试选择下一个或其他  图像文件通过filechooser ..新图像没有显示出来..以前的图像  仍然在那里..无法显示更新的图像..  我还在文本字段中设置了图像的路径名并进行了设置  正确。但图像没有在jlabel上更新......

请任何人告诉我在哪里  我的代码错了..

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    JFileChooser jFileChooser1 = new JFileChooser();
    repaint();

    jFileChooser1.setAcceptAllFileFilterUsed(false);

    int state = jFileChooser1.showOpenDialog(new JFrame());
    jTextField1.setText("");
    jLabel1 = new JLabel();

    if (state == JFileChooser.APPROVE_OPTION) {
        file = jFileChooser1.getSelectedFile();
        s2 = file.toString();
        jTextField1.setText(s2);

        jLabel1.setName(s2);
        jLabel1.setLocation(40, 40);
        jLabel1.setSize(300, 300);
        jLabel1.setVisible(true);
        try {
            bi = ImageIO.read(file);
            // JOptionPane.showMessageDialog(new JFrame(),file.getName());
            icon = new ImageIcon(bi);

            Image img = icon.getImage();
            icon = new ImageIcon(file.getPath());
            // icon = new ImageIcon(paths[currentIndex].getPath());
            scaleImage = icon.getImage().getScaledInstance(80, 80,
                    Image.SCALE_DEFAULT);

            resizedImage = resize(bi, 200, 200);
            icon = new ImageIcon(resizedImage);

            jLabel1.setIcon(icon);
            jLabel2 = new JLabel();

            repaint();
            pack();

            paths = file.getParentFile().listFiles();
            currentIndex = indexOf(paths, file);
        } catch (Exception e) {
            System.out.println(e);
        }
    } else if (state == JFileChooser.CANCEL_OPTION) {
        JOptionPane.showMessageDialog(new JFrame(), "Canceled");
    }
    add(jLabel1);

}

1 个答案:

答案 0 :(得分:2)

不要重新创建jLabel1。将它存储在类的一个字段中,只需调用setIcon()从文件选择器传递图像