2013-08-05 53 views
7

我正在開發Eclipse RCP項目,並且需要讓用戶選擇某個文件。 爲方便起見,根據一些條件,應該在打開文件選擇對話框之前設置文件選擇對話框的初始目錄。在SWT FileDialog中設置初始目錄

由於我綁定到Eclipse RCP/SWT,我正在使用org.eclipse.swt.widgets.FileDialog
這個FileDialog的文檔指出使用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

至少,這正是我所面臨的行爲:第一次打開對話框時路徑很好,但第二次,路徑最初設置爲最後選擇的路徑。 在大多數情況下,這似乎很方便,但它不在我的。

這是正確的嗎? 如果是這樣,我有沒有機會根據我的需要改變行爲?

感謝您的幫助!

+0

我提出了該錯誤.. https://bugs.eclipse.org/bugs/show_bug.cgi?id=426849 –

回答

0

當你重新打開它時,你是否使用了相同的FileDialog對象?

我跑了一些快速測試,發現如果你重新設置了filterPath,對話框會在正確的位置打開。

如果我再次打開同一個對象,它會從先前選擇的位置開始。

+0

我遇到了同樣的問題,即setFilterPath()並不總是工作。我可以推斷出最接近的是setFilterPath()在提供文件夾(如「C:\\」)時是一致的,但是如果指定網絡主機,例如「\\\\ jmr-stamp01」,則全部投注已關閉。有時你會看到網絡路徑,有時你不會。我懷疑SWT FileDialog類有一個bug。 –

+0

是的,我使用新的FileDialog對象,但它不工作.. –