创建具有多个文件名的过滤器

时间:2014-07-21 05:55:04

标签: java swt

我想在java中为浏览文件对话创建过滤器,它应该只允许abc.exe或xyz.exe 我正在使用swt.widgets.FileDialog

目前我正在使用以下字符串

过滤* .exe
 String[] extensionFilter = { "*.exe" }; 
 fileDialog .setFilterExtensions(extensionFilter);

如何更改此设置以仅允许仅使用abc.exe xyz.exe?

应该搜索abc.exe和xyz.exe

示例:当您允许多个扩展名(.exe,.dat)时,它将搜索具有该(.exe,.dat)扩展名的所有文件,类似地我想搜索abc.exe和xyz.exe

提前致谢

3 个答案:

答案 0 :(得分:3)

可以使用setFilterExtension(String[]),但您必须知道如何格式化字符串:

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new FillLayout());

    Button button = new Button(shell, SWT.PUSH);
    button.setText("Choose");
    button.addListener(SWT.Selection, new Listener()
    {
        @Override
        public void handleEvent(Event arg0)
        {
            FileDialog dialog = new FileDialog(shell);
            dialog.setFilterExtensions(new String[] { "abc.exe;xyz.exe" });

            System.out.println(dialog.open());
        }
    });

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

单个字符串"abc.exe;xyz.exe"告诉它这两个都是允许的。

答案 1 :(得分:0)

试试这个

String[] extensionFilter = { "abc.exe","xyz.exe" };

答案 2 :(得分:0)

您可以使用 setFilterNames
解释here 它仅允许String类型数组变量。无需担心regEx

 String[] extensionFilter = { "abc.exe;xyz.exe" };

 fileDialog.setFilterExtensions( extensionFilter );