我有一个应用程序,我想在其中显示 swt 文件对话框,但在定义的位置(我希望它显示在下面的某个地方)。我没有得到任何方法。感谢任何帮助...
问问题
2086 次
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
当在FileDialog
shell 顶部显示时,您可以打开文件对话框,然后获取父 shell 的子 shell ( shell.getShells()
) 以找出文件对话框的 shell。现在您应该能够更改其位置。
于 2013-08-03T16:34:10.130 回答