W oknie Wygląd i działanie systemu JFileChooser po lewej stronie okna dialogowego JFileChooser wyświetlanych jest pięć przycisków: Ostatnie elementy, Komputer, Moje dokumenty, Komputer i Sieć. Każda z nich reprezentuje widoki systemu plików, tak jak pokazywałby to Eksplorator Windows. Wygląda na to, że JFileChooser domyślnie wyświetla widok Moich Dokumentów, chyba że wywoływane są metody setSelectedFile() lub setCurrentDirectory().Jak ustawić domyślny widok pliku JFileChooser na widok komputera zamiast Moich dokumentów
Próbuję ułatwić użytkownikowi wybór jednego z wielu zmapowanych dysków sieciowych, które powinny pojawić się w widoku "Komputer". Czy istnieje sposób ustawienia JFileChooser, aby domyślnie otwierał widok "Komputer"?
Próbowałem kilka metod wymusić go, najnowsze jest znaleźć katalog główny i ustawić go jako currentDirectory, ale to pokazuje zawartość tego węzła głównego. Najnowszy kod znajduje się poniżej.
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();
}
}
}
Czy istnieje metoda, która pozwala mi wybrać „Computer” Widok Domyślnie (lub sieci lub dowolny inny pogląd), lub jakikolwiek sposób oszukać JFileChooser?
EDYTOWANIE
Dziękuję za szybkie i dokładne odpowiedzi. Połączyłem odpowiedzi Hovercraft Full Of Eels i Guillaume Polet, aby spróbować, aby kod działał na dowolnej liście dysków. Wynikowy kod jest następujący. Jeszcze raz, dzięki.
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+ i ditto, to też działa dobrze. –