0

ファイルチューザーで選択した次の画像を次回表示する方法 ファイルを選択してjlabelに画像を表示するファイルチューザーを持っていた私のコードです。画像は適切なサイズに正しくスケーリングされますが、ファイルチューザーで次の画像ファイルまたは他の画像ファイルを選択しようとすると、新しい画像が表示されませんでした.テキストフィールドに画像のパス名を設定すると、正しく設定されますが、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);

}
4

1 に答える 1

2

jLabel1 を再作成しないでください。クラスのフィールドとしてどこかに保存し、ファイルチューザーから画像を渡して setIcon() を呼び出すだけです

于 2013-11-08T12:20:59.447 に答える