1

NetBeans(java) を使用して JFileChooser で JDialog を作成し、ComboBox を使用して lnk フォルダーを開こうとすると (他の方法では正常に動作します)、例外がスローされ、フォルダーが開かれません。これはバグであることがわかりました。回避策をいくつか試しましたが、うまくいきませんでした。手伝って頂けますか?または、「トリック」を提案できますか?JFileChooser(または少なくともComboBox)がlnkフォルダーを表示しないようにすることを考えましたが、その方法がわかりません。

4

1 に答える 1

1

Apache CommonsFileFilterの aおよび theFileUtilsを使用して、シンボリック リンクが表示されないようにすることができます。

JFileChooser fc = new JFileChooser();
fc.setFileFilter(new FileFilter() {

    @Override
    public String getDescription() {
        return "All (without symlinks)";
    }

    @Override
    public boolean accept(File f) {
        try {
            return !FileUtils.isSymlink(f);
        } catch (IOException e) {
            return true; // Maybe to be changed to false depending on
                         // your use case
        }
    }
});

FileSystemView@Andrew Thompsonが提案したように、他の代替手段は custom を使用することです。

編集:質問をより注意深く読んだ後、Windowsショートカットのフィルタリングにもっと興味があるようです。同じ手法が適用されます。

JFileChooser fc = new JFileChooser();
fc.setFileFilter(new FileFilter() {

    @Override
    public String getDescription() {
        return "All (without shortcuts)";
    }

    @Override
    public boolean accept(File f) {
        return !f.getName().endsWith(".lnk");
    }
});
于 2012-08-29T15:22:56.610 に答える