В Windows Look and Feel для JFileChooser в левой части диалогового окна JFileChooser отображаются пять кнопок: «Недавние элементы», «Рабочий стол», «Мои документы», «Компьютер» и «Сеть». Каждый из них представляет собой представления файловой системы, которые Windows Explorer будет показывать им. Похоже, что JFileChooser по умолчанию использует представление «Мои документы», если не вызваны методы setSelectedFile() или setCurrentDirectory().Как сделать JFileChooser по умолчанию для представления компьютера вместо моих документов
Я пытаюсь сделать так, чтобы пользователь мог выбрать одно из нескольких подключенных сетевых дисков, которое должно появиться в представлении «Компьютер». Есть ли способ установить JFileChooser для открытия представления «Компьютер» по умолчанию?
Я пробовал пару методов, чтобы заставить его, самое последнее существо, чтобы найти корневой каталог и установить его как currentDirectory, но это показывает содержимое этого корневого узла. Последний код приведен ниже.
private File originalServerRoot;
private class SelectOriginalUnitServerDriveListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
JFileChooser origDriveChooser = new JFileChooser();
origDriveChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
File startFile = new File(System.getProperty("user.dir")); //Get the current directory
// Find System Root
while (!FileSystemView.getFileSystemView().isFileSystemRoot(startFile))
{
startFile = startFile.getParentFile();
}
origDriveChooser.setCurrentDirectory(startFile);
origDriveChooser.setDialogTitle("Select the Mapped Network Drive");
int origDriveChooserRetVal = origDriveChooser.showDialog(contentPane,"Open");
if (origDriveChooserRetVal == JFileChooser.APPROVE_OPTION)
{
originalUnitServerRoot = origDriveChooser.getSelectedFile();
}
}
}
Есть метод, который позволяет мне выбрать «Компьютер» вид по умолчанию (или сеть, или любой другой вид), или каким-либо образом обмануть JFileChooser?
EDIT
Спасибо за быстрые и полные ответы. Я объединил ответы на Hovercraft Full Of Eels и Guillaume Polet, чтобы попытаться заставить код работать над любой буквой диска. Полученный код выглядит следующим образом. Еще раз спасибо.
private File originalServerRoot;
private class SelectOriginalUnitServerDriveListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
JFileChooser origDriveChooser = new JFileChooser();
origDriveChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
File startFile = new File(System.getProperty("user.dir")); //Get the current directory
// Find System Root
while (!FileSystemView.getFileSystemView().isFileSystemRoot(startFile))
{
startFile = startFile.getParentFile();
}
//Changed the next line
origDriveChooser.setCurrentDirectory(origDriveChooser.getFileSystemView().getParentDirectory(rootFile));
origDriveChooser.setDialogTitle("Select the Mapped Network Drive");
int origDriveChooserRetVal = origDriveChooser.showDialog(contentPane,"Open");
if (origDriveChooserRetVal == JFileChooser.APPROVE_OPTION)
{
originalUnitServerRoot = origDriveChooser.getSelectedFile();
}
}
}
1+ и то же, что тоже хорошо работает. –