1

でファイルを削除するにはどうすればよいJFileChooserですか? Deleteネイティブで記述されているため、AWT には単純なボタンを使用してファイルを削除するオプションがあることを知っています。

しかし、でファイルを削除したい場合はどうすればよいJFileChooserですか? 削除しようとすると、ファイルが別のプログラムによってアクセスされているため、削除できなかったという例外が発生しました。

この状況で私が尋ねたい2つの質問は..

質問

  1. ファイルを削除するハックはありますJFileChooserか?
  2. で削除しているときに、別のプログラムがファイルにアクセスしていますFileDialog。ネイティブコードで書かれているからでしょうか。

どんな助けでも大歓迎です。前もって感謝します。

4

3 に答える 3

0

これは、削除キー リスナーを に追加する方法JFileChooserです。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.io.File;
import java.nio.file.Files;

public class JFileChooserUtilities
{
    public static void registerDeleteAction(JFileChooser fileChooser)
    {
        AbstractAction abstractAction = new AbstractAction()
        {
            public void actionPerformed(ActionEvent actionEvent)
            {
                JFileChooser jFileChooser = (JFileChooser) actionEvent.getSource();

                try
                {
                    File selectedFile = jFileChooser.getSelectedFile();

                    if (selectedFile != null)
                    {
                        int selectedAnswer = JOptionPane.showConfirmDialog(null, "Are you sure want to permanently delete this file?", "Confirm", JOptionPane.YES_NO_OPTION);

                        if (selectedAnswer == JOptionPane.YES_OPTION)
                        {
                            Files.delete(selectedFile.toPath());
                            jFileChooser.rescanCurrentDirectory();
                        }
                    }
                } catch (Exception exception)
                {
                    exception.printStackTrace();
                }
            }
        };

        fileChooser.getActionMap().put("delAction", abstractAction);

        fileChooser.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("DELETE"), "delAction");
    }
}

JavaTechnicalの回答から改作されたコード。

于 2016-05-14T13:06:55.710 に答える