我正在做一个Eclipse RCP项目,需要让用户选择一些文件.为了方便起见,基于一些条件,在打开文件选择对话框之前,应该先设置它的初始目录。
由于我绑定的是Eclipse RCP SWT,所以我在工作中使用的是 org.eclipse.swt.widgets.FileDialog
. 本文件的内容如下: FileDialog
指出要使用 setFilterPath(String string)
-方法,这正是我所需要的(见 文件).
FileDialog dialog = new FileDialog(shell, SWT.OPEN);
dialog.setFilterExtensions(new String [] {"*.html"});
dialog.setFilterPath("c:\\temp");
String result = dialog.open();
不幸的是,它没有工作,至少不是 "每次"。
我目前还没有安装检查它,但我很确定这个功能在Windows 200XPVista机器上会完全正常工作。lpstrInitialDir.
至少,这正是我所面临的行为。我第一次打开对话框时,路径是好的,但第二次打开时,路径被初始化为最后选择的路径。这在大多数情况下似乎很方便,但在我的情况下不是这样。
如果是这样,我是否有机会根据我的需要改变这种行为?
谢谢你的帮助
我找到了一个简单的解决你所描述的问题的方法(我也有完全相同的问题)。
只要把你的代码重新排列一下就可以了。
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();
不知何故,调用方法的顺序是相关的。
你是否使用相同的 FileDialog
对象时,是否会出现错误?
我进行了一些快速测试,发现如果你重新设置filterPath,对话框就会在正确的位置打开。
如果我再次打开同一个对象,它就会在之前选择的位置开始。