以编程方式为 JFileChooser 设置文件过滤器
Posted
技术标签:
【中文标题】以编程方式为 JFileChooser 设置文件过滤器【英文标题】:Programmatically Setting Up File Filter for JFileChooser 【发布时间】:2018-12-27 20:08:07 【问题描述】:我目前正在尝试通过使用数组(1D 用于描述,2D 用于扩展)来添加文件过滤器,如下所示:
void findFile()
chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle("Choose file to upload");
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setAcceptAllFileFilterUsed(true);
ft = new FileType(this.chooser);
... //rest of code
文件类型.java
package function;
import java.io.FileFilter;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
public class FileType
private String[] desc =
"Word Document (.doc, .docx)", "Excel Document (.xlsx, .xls)"
;
private String[][] ext =
"doc", "docx", "xlsx", "xls"
;
public int counts = desc.length;
FileNameExtensionFilter fe;
JFileChooser session;
public FileType(JFileChooser session)
this.session = session;
generateCode();
void generateCode()
for(int i = 0; i < counts; i++)
for(String pass : ext[i])
System.out.println(pass);
generateFileType(desc[i], pass);
public void generateFileType(String a, String...b)
for(String x : b)
fe = new FileNameExtensionFilter(a, x);
session.addChoosableFileFilter(fe);
/*public JFileChooser generateFilter(JFileChooser a)
generateCode();
for(int i = 0; i < counts; i++)
a.addChoosableFileFilter(fe);
return a;
*/
一切(几乎)工作,但我不知道如何将扩展合并到一个描述中(即它重复描述,但使用不同的扩展过滤器)。 image here.
虽然确实使用了可变参数,但我似乎找不到在 for
循环中一次传递多个值的方法
【问题讨论】:
【参考方案1】:好吧,我真是个笨蛋。 这就是答案:
void generateCode()
for(int i = 0; i < counts; i++)
generateFileType(desc[i], ext[i]);
public void generateFileType(String a, String...b)
fe = new FileNameExtensionFilter(a, b);
session.addChoosableFileFilter(fe);
我上次做的是遍历扩展数组,这使得程序一个接一个地传递值。
【讨论】:
以上是关于以编程方式为 JFileChooser 设置文件过滤器的主要内容,如果未能解决你的问题,请参考以下文章