[英]Java - Extremely basic JFileChooser issue
我想制作一个JFileChooser,它允许用户选择任何包含单词“ hello”的文件或目录 。 即,以下是有效的选择:
C:\hello\
C:\fun\hello.txt
etc.
我该如何工作? 我试过了:
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
JFileChooser f = new JFileChooser();
f.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
f.setFileFilter(new FileFilter() {
public boolean accept(File file) {
return file.getAbsolutePath().contains("hello");
}
public String getDescription() {
return "hi";
}
});
f.showOpenDialog(this);
但是我的JFileChooser是空白的。 也就是说,我根本看不到C:\\中的文件夹“ fun”。
我不得不做一些其他的改写。
两个自定义类和一个跑步类。 试试看。
package custom_file_chooser;
import java.io.File;
import javax.swing.filechooser.FileFilter;
public class MyFileFilter extends FileFilter {
private String filterString;
public MyFileFilter(String filterString) {
super();
this.filterString = filterString;
}
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getName().toLowerCase().contains(filterString);
}
@Override
public String getDescription() {
return filterString + " only";
}
}
package custom_file_chooser;
import java.io.File;
import javax.swing.JFileChooser;
public class MyFileChooser extends JFileChooser {
private String filterString;
public MyFileChooser(String filterString) {
super();
this.filterString = filterString;
setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
setFileFilter(new MyFileFilter(filterString));
}
@Override
public void approveSelection() {
File file = this.getSelectedFile();
if (!file.isDirectory() || file.getName().contains(filterString)) {
super.approveSelection();
}
}
}
package custom_file_chooser;
import java.io.File;
import javax.swing.JFileChooser;
public class CustomFileChooserRunner {
public static void main(String[] args) {
MyFileChooser f = new MyFileChooser("hello");
int result;
result = f.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File file = f.getSelectedFile();
System.out.println("You chose to open: " +
file.getName() + (file.isDirectory() ? " directory" : " file"));
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.