如何设置我的swt文件对话框的位置?

时间:2013-08-01 06:46:43

标签: java swt

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

3 个答案:

答案 0 :(得分:1)

目前,API不支持设置FileDialog的位置。 但是有一点黑客/解决方法。

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

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

以下是解决问题的代码

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

答案 1 :(得分:0)

不是FileDialog#setFilterPath()您要找的是什么?:

  

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

答案 2 :(得分:0)

在shell上显示FileDialog时,您可以打开文件对话框,然后获取父shell的子shell(shell.getShells())以找出文件对话框的shell。现在你应该能够改变它的位置。