在SWT FileDialog中设置初始目录

时间:2013-08-05 12:48:09

标签: java swt rcp filedialog

我正在开发一个Eclipse RCP项目,需要让用户选择一些文件。 为方便起见,根据某些条件,应在打开文件之前设置文件选择对话框的初始目录。

由于我已经使用Eclipse RCP / SWT,我正在使用org.eclipse.swt.widgets.FileDialogFileDialog的文档指出使用setFilterPath(String string) - 方法,该方法应该完全符合我的要求(请参阅documentation)。

   FileDialog dialog = new FileDialog(shell, SWT.OPEN);
   dialog.setFilterExtensions(new String [] {"*.html"});
   dialog.setFilterPath("c:\\temp");
   String result = dialog.open();

不幸的是它不起作用,至少不是“每次都”。

我目前没有安装检查它,但我很确定该功能在Windows 200 / XP / Vista机器上完全正常。 我正在使用Windows 7计算机,我认为我遇到了lpstrInitialDir所述的行为。

至少,这正是我所面临的行为:第一次打开对话框时路径是好的,但第二次,路径最初设置为最后选择的路径。 在大多数情况下,这似乎很方便,但它不在我的手中。

这可能是对的吗? 如果是这样,我是否有机会根据我的需要改变行为?

感谢您的回答!

2 个答案:

答案 0 :(得分:1)

我为您描述的问题找到了一个简单的解决方案(我有完全相同的问题)。

只需重新排列您的代码,如下所示:

   FileDialog dialog = new FileDialog(shell, SWT.OPEN);
   dialog.setFilterPath("c:\\temp"); // This line is switched with the following line
   dialog.setFilterExtensions(new String [] {"*.html"});
   String result = dialog.open();

以某种方式调用的方法是相关的。

答案 1 :(得分:0)

重新打开时,您是否使用相同的FileDialog对象?

我运行了一些快速测试,发现如果重新设置filterPath,对话框将在正确的位置打开。

如果我再次打开同一个对象,它将从之前选择的位置开始。