在JFileChooser的Windows外观中,JFileChooser对话框的左侧显示五个按钮:Recent Items,Desktop,My Documents,Computer和Network.这些都表示文件系统的视图,因为Windows资源管理器会显示它们.看起来除非调用setSelectedFile()或setCurrentDirectory()方法,否则JFileChooser默认为My Documents视图.
我试图让用户轻松选择多个映射网络驱动器中的一个,这应该出现在"计算机"视图中.有没有办法将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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有一种方法允许我默认选择"计算机"视图(或网络,或任何其他视图),或任何方式欺骗JFileChooser?
编辑
感谢您快速彻底的答案.我结合了Hovercraft Full Of Eels和Guillaume Polet的答案,尝试使代码适用于任何驱动器号.结果代码如下.再一次,谢谢.
private File originalServerRoot;
private class …Run Code Online (Sandbox Code Playgroud)