在SWT FileDialog中设置初始目录。

问题描述 投票:7回答:2

我正在做一个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.

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

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

谢谢你的帮助

java swt rcp filedialog
2个回答
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
投票

你是否使用相同的 FileDialog 对象时,是否会出现错误?

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

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

© www.soinside.com 2019 - 2024. All rights reserved.