Java JFileChooser在更改筛选器时附加扩展
我有过滤器Java JFileChooser在更改筛选器时附加扩展,java,swing,jfilechooser,Java,Swing,Jfilechooser,我有过滤器 全部 html 文本 根据选择的过滤器,将扩展名附加到JFileChooser或不允许用户输入扩展名 不是在他们按下保存按钮之后,而是在窗口打开时 我正在查看addPropertyChangeListener,但在文件更改属性之外找不到任何内容 编辑:到目前为止,我可以添加过滤器,但我仍然不知道如何获取关联的过滤器 fc.addPropertyChangeListener(JFileChooser.FILE_FILTER_CHANGED_PROPERTY,
- 全部
- html
- 文本
fc.addPropertyChangeListener(JFileChooser.FILE_FILTER_CHANGED_PROPERTY, new PropertyChangeListener()
{
@Override
public void propertyChange(PropertyChangeEvent evt)
{
**MyFileFilter** filter = (**MyFileFilter**) evt.getNewValue();
String extension = filter.getExtensionByDescription(filter.getDescription());
//String extension = "ext"; // somehow here
fc.setSelectedFile(new File("." + extension));
}
});
解决方案 创建扩展FilerFilter的自定义类
public String getExtensionByDescription(String description)
{
for (int i = 0 ; i < fileList.size(); i++)
{
if (description.contains(fileList.get(i).getDescription()))
{
return "." + fileList.get(i).getExtension();
}
}
// for (FileType obj : fileList)
// {
// if (description.contains(obj.getDescription()))
// return "." + obj.getExtension();
// }
return "";
}
公共字符串getExtensionByDescription(字符串描述)
{
对于(int i=0;i另一个问题是,有人知道为什么注释掉的for循环不起作用吗?它返回了错误的扩展名,但在逻辑上与上面的循环相同:S
JFileChooser
似乎引发了meI的fileFilterChanged
属性更改事件,但唯一可用的方法是getDescription,它对我来说不包含扩展名:(事件发生时,请询问JFileChooser
以获取当前筛选器。)triggered@MadProgrammer我找到了答案。创建一个扩展FilterFilter的自定义类。使用使用描述获取扩展的方法getExtension。完成后我将发布帖子。谢谢!@MadProgrammer我添加了我的工作解决方案,很快stion.知道为什么注释掉的for循环不起作用吗?我查看了它们,它们在功能上是相同的,但是注释掉的for循环返回了错误的值:(