gpt4 book ai didi

java - 设置一个新的 JFileChooser FileFilter 并重置以前的

转载 作者:行者123 更新时间:2023-11-29 07:44:39 25 4
gpt4 key购买 nike

我想要一个有 2 个选项的文件过滤器,一个显示所有文件,另一个显示特定扩展名。

具体的扩展应该是默认选择的那个。

我两次使用相同的 JFileChooser,第一次显示 .fas 文件,第二次显示 .xls 文件。

现在我正在使用这段代码,但由于某些原因它不会覆盖以前的文件扩展名。如果您回收 JFileChooser,这里的许多答案都有相似的代码和完全相同的问题。

第一部分,一切正常

fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getAbsolutePath().endsWith(".fas");
}

@Override
public String getDescription() {
return "Fasta";
}
});
// more modern API, same result
// fileChooser.setFileFilter(new FileNameExtensionFilter("File fasta", "fas"));

第二部分。这用于同一 JFileChooser 的第二次“打开”。它似乎只是添加了一个过滤器(选择 .fas 文件的选项仍然存在)。

// delete name of previously selected file
File currentDirectory = fileChooser.getCurrentDirectory();
fileChooser.setSelectedFile(new File(""));
fileChooser.setCurrentDirectory(currentDirectory);

// set new file filter
fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getAbsolutePath().endsWith(".xls");
}

@Override
public String getDescription() {
return "Excel 97";
}
});
// more modern API, same result
// fileChooser.setFileFilter(new FileNameExtensionFilter("Excel 97", "xls"));

最佳答案

我猜名称 setFileFilter 可能会产生误导,因为它实际上所做的是设置选定 文件过滤器(而不替换其他过滤器)。

如果您想回收JFileChooser,最简单的解决方案是在设置新过滤器之前调用resetChoosableFileFilters()

第一次选择的代码

fileChooser.setFileFilter(new FileNameExtensionFilter("File fasta", "fas"));

第二次选择的代码

// delete name of previously selected file, but stay in the same directory
File currentDirectory = fileChooser.getCurrentDirectory();
fileChooser.setSelectedFile(new File(""));
fileChooser.setCurrentDirectory(currentDirectory);

// reset current file filters
fileChooser.resetChoosableFileFilters();

// set new file filter
fileChooser.setFileFilter(new FileNameExtensionFilter("Excel 97", "xls"));

// the "All files" filter will be present too, unless you uncomment this
// fileChooser.setAcceptAllFileFilterUsed(false);

关于java - 设置一个新的 JFileChooser FileFilter 并重置以前的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26886934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com