2013-08-05 4 views
7

Я работаю над проектом RCP Eclipse и должен позволить пользователю выбрать файл. Для удобства на основе некоторых условий перед открытием следует установить начальную директорию диалога выбора файла.Установить исходный каталог в 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 есть ошибка. –

+0

Да, я использую новый объект FileDialog, но его не работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^