0

我有一个应用程序,我想在其中显示 swt 文件对话框,但在定义的位置(我希望它显示在下面的某个地方)。我没有得到任何方法。感谢任何帮助...

4

3 回答 3

1

目前 API 不支持设置FileDialog. 但是有一个小技巧/解决方法。

您所需要的只是创建一个不可见的Shell并设置位置。根据FileDialog父级决定其位置。

知道确切的坐标似乎有点复杂,setLocation但是Shell,我让你做一些排列和组合来了解它们。

这是解决您问题的代码

public static String openNewShellDialog(Display display)
{
    final Shell shell = new Shell(display , SWT.APPLICATION_MODAL); 
    shell.setLayout(new GridLayout(1, false));
    System.out.println(display.getPrimaryMonitor().getClientArea());
    shell.setLocation(616, 500); //It seems the location is relative to the center of the Shell w.r.t client area
    shell.setSize(0,0);
    shell.setVisible(false);
    shell.open();

    FileDialog d = new FileDialog(shell);
    String s = d.open();

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

    return s;
} 
于 2013-08-01T08:42:18.357 回答
0

不是FileDialog#setFilterPath()你要找的吗?:

将对话框将使用的目录路径设置为参数,该参数可能为空。此路径中的文件名将出现在对话框中,根据过滤器扩展名进行过滤。如果字符串为空,则将使用操作系统的默认过滤器路径。

于 2013-08-01T08:35:16.507 回答
0

当在FileDialogshell 顶部显示时,您可以打开文件对话框,然后获取父 shell 的子 shell ( shell.getShells()) 以找出文件对话框的 shell。现在您应该能够更改其位置。

于 2013-08-03T16:34:10.130 回答