过滤器在 FileDialog 中不起作用
Filter not working in FileDialog
我必须用 FileDialog 替换 JFileChooser。我无法过滤掉文件。以下是代码。过滤器在保存文件对话框中也不可见,用户也可以使用不同的扩展名保存文件。环境是windows10
public class ABCDialog extends JDialog {
private String fileName = StringUtils.Empty;
public ABCDialog (Frame frame,String title) {
super(frame, title);
.....
}
public String getFileName () {
return fileName;
}
private String setFileName () {
FileDialog file = new FileDialog(new Frame(), "Save File...", FileDialog.SAVE);
final FilenameFilter filenameFilter = (dir, name) -> name.endsWith(".txt");
file.setFilenameFilter(filenameFilter);
file.setFile("*.txt");
file.setVisible(true);
return (file.getDirectory() + file.getFile());
}
@Override
public void setVisible(boolean visible) {
....
fileName = setFileName();
}
}
根据 FileDialog#setFilenameFilter JavaDoc:
Filename filters do not function in Sun's reference implementation for Microsoft Windows.
所以这是预期的行为。
我必须用 FileDialog 替换 JFileChooser。我无法过滤掉文件。以下是代码。过滤器在保存文件对话框中也不可见,用户也可以使用不同的扩展名保存文件。环境是windows10
public class ABCDialog extends JDialog {
private String fileName = StringUtils.Empty;
public ABCDialog (Frame frame,String title) {
super(frame, title);
.....
}
public String getFileName () {
return fileName;
}
private String setFileName () {
FileDialog file = new FileDialog(new Frame(), "Save File...", FileDialog.SAVE);
final FilenameFilter filenameFilter = (dir, name) -> name.endsWith(".txt");
file.setFilenameFilter(filenameFilter);
file.setFile("*.txt");
file.setVisible(true);
return (file.getDirectory() + file.getFile());
}
@Override
public void setVisible(boolean visible) {
....
fileName = setFileName();
}
}
根据 FileDialog#setFilenameFilter JavaDoc:
Filename filters do not function in Sun's reference implementation for Microsoft Windows.
所以这是预期的行为。