过滤器在 FileDialog 中不起作用
Posted
技术标签:
【中文标题】过滤器在 FileDialog 中不起作用【英文标题】:Filter not working in FileDialog 【发布时间】:2017-04-04 10:45:38 【问题描述】:我必须用 FileDialog 替换 JFileChooser。我无法过滤掉文件。以下是代码。过滤器在 Save FileDialog 上也不可见,用户也可以使用不同的 ext 保存文件文件。环境是windows 10
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();
【问题讨论】:
1) “我必须用 FileDialog 替换 JFileChooser。” .. 为什么? 2) 你的问题是“How to X?”?如果是这样,请将其作为edit 添加到问题中。如果没有,请考虑一个特定的问题并做同样的事情(编辑)。 如问题所示。在我提供的上述示例中,文件名过滤器未应用过滤器。此外,我想为 Windows/Mac 使用标准 FileDialog。如果用户使用的是 windows,那么保存对话框应该是 windows ui,如果用户使用的是 mac,那么对话框的外观应该是基于 mac 的保存对话框 “文件名过滤器没有应用过滤器” 这是个问题,不是问题。该问题可能引发的问题类似于“为什么它不起作用?”、“如何使它起作用?” i>, “这是正确的方法,还是有更好的方法?” - 请注意查询语句末尾的?
。
我们在这里讨论问题的解决方案,我已经清楚地说明了问题。如果您没有答案,请不要假装回复
如果您不喜欢我的cmets,请随时report them。
【参考方案1】:
根据FileDialog#setFilenameFilterJavaDoc:
文件名过滤器在 Sun 的 Microsoft Windows 参考实现中不起作用。
所以这是预期的行为。
【讨论】:
感谢您的帮助以上是关于过滤器在 FileDialog 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
MS Access FileDialog 过滤器在原始负载上不起作用
视图“搜索词”暴露的过滤器在 PROD 中不起作用,但在本地起作用
Servlet 过滤器似乎在 Dropwizard 中不起作用