2016-11-21 95 views
-1

我必须用FileDialog替换JFileChooser。我无法过滤掉文件。以下是代码。该过滤器在保存FileDialog中也不可见,用户也可以用不同的外部文件保存文件。该环境是Windows 10过滤器无法在FileDialog中工作

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(); 
} 

} 
+0

1)*“我必须用FileDialog替换JFileChooser。”* ..为什么? 2)你的问题*“如何X?”*?如果是这样,请将其添加为问题的[编辑]。如果没有,请考虑一个具体问题并执行相同的操作(编辑)。 –

+0

正如问题所示。 filenamefilter没有应用我提供的上述示例中的过滤器。此外,我想为Windows/Mac使用标准的FileDialog。如果用户使用的是Windows,那么保存对话框应该显示在窗口中,如果用户使用的是mac,那么对话框的外观应该是基于mac的保存对话框 –

+0

*“filenamefilter是不应用过滤器“*这是一个问题,而不是问题。 **可能由这个问题引起的问题**将沿着*“为什么它不起作用?”,*“如何使它工作?”,*“这是正确的方法还是还有更好的吗?“ - 在询问声明结尾处注意”?“。 –

回答

1

按照FileDialog#setFilenameFilter的JavaDoc:

文件名过滤器不会在Sun公司用于Microsoft Windows参考实现的功能。

所以这是预期的行为。

+0

感谢您的帮助 –

+0

是否有解决方法? –

相关问题