过滤器在 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 中不起作用

Kendo UI 网格过滤器在引导模式中不起作用

操作过滤器在 asp.net 核心 Web API 中不起作用

servlet 过滤器在 JSP 中不起作用