【发布时间】:2011-08-16 09:24:56
【问题描述】:
I want to choose only .csv files with FileChooser but when chooser opens I see all extensions.我还需要设置更多内容吗?
btnFile.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle("Choose Value File");
chooser.addChoosableFileFilter(new CSVFilter());
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
System.out.println("getCurrentDirectory(): "
+ chooser.getCurrentDirectory());
System.out.println("getSelectedFile() : "
+ chooser.getSelectedFile());
}
else {
System.out.println("No Selection ");
}
}
});
并且过滤器是嵌套类
class CSVFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File f) {
return f.isFile() || f.getName().toLowerCase().endsWith(".csv");
}
public String getDescription() {
return "*.csv";
}
}
【问题讨论】:
-
您的条件
return f.isFile() || f.getName().toLowerCase().endsWith(".csv");将为所有文件返回 true,因为文件的f.isFile()将返回 true。如@User1 所述,您需要使用&&而不是||。
标签: java swing jfilechooser filefilter