我正在使用JFileChooser来选择文件,我试图限制显示只显示jpg或jpeg文件。我尝试过FileFilter和ChoosableFileFilter,它不限制文件选择。这是我的代码:
JFileChooser chooser = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("JPEG file", new String[] {"jpg", "jpeg"});
chooser.setFileFilter(filter);
chooser.addChoosableFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
debug.put("You chose to open this file: " + chooser.getSelectedFile().getAbsolutePath());
File selectedFile = new File(chooser.getSelectedFile().getAbsolutePath());
...
答案 0 :(得分:8)
试试这个:
import javax.swing.JFileChooser;
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileFilter() {
public String getDescription() {
return "JPG Images (*.jpg)";
}
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
} else {
String filename = f.getName().toLowerCase();
return filename.endsWith(".jpg") || filename.endsWith(".jpeg") ;
}
}
});
答案 1 :(得分:1)
尝试使用fileChooser.setFileFilter(filter)
代替fileChooser.addChoosableFileFilter(filter)
。
答案 2 :(得分:1)
尝试在fileChooser.setFileFilter(filter)
之后使用fileChooser.addChoosableFileFilter(filter)
,因为您需要将filter
添加到fileChooser
,然后将其设置为默认值。
这是一个很好的例子链接: http://www.java2s.com/Code/Java/Swing-JFC/CustomizingaJFileChooser.htm
答案 3 :(得分:1)
你的意思是“它不限制选择”,如“它允许任何文件类型的选项”?如果是,请尝试JFileChooser.setAcceptAllFileFilterUsed(boolean)
。
chooser.setAcceptAllFileFilterUsed(false);
根据JFileChooser documentation,它应该告诉它不要将all-file-types文件过滤器添加到文件过滤器列表。
答案 4 :(得分:0)
以下是示例代码!
private void btnChangeFileActionPerformed(java.awt.event.ActionEvent evt) {
final JFileChooser fc = new JFileChooser();
fc.addChoosableFileFilter(new ArffFilter());
int returnVal = fc.showOpenDialog(this);
...
}
然后
class ArffFilter extends FileFilter {
@Override
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
String fileName = file.getName();
int i = fileName.lastIndexOf('.');
if (i > 0 && i < fileName.length() - 1) {
if (fileName.substring(i + 1).toLowerCase().equals("arff")) {
return true;
}
}
return false;
}
@Override
public String getDescription() {
return ".arff (Weka format)";
}
}