当我创建一个系统上一个JFileChooser与断开网络驱动器被显示在JFileChooser中之前永远需要。 它会阻止EDT与一个断开连接的网络驱动器20s左右。
看起来这是一个常见的问题,但我不能找到一个方法来解决它。 我已经看到了可能的选项:
- 使用JFileDialog
- 与一个其中getRoots()返回驱动器的固定列表替换的FileSystemView
- 试图打开的JFileChooser之前切换到等待光标(S)
- 在启动时创建一个JFileChooser,并保持它撒手人寰
- 尝试使用xfiledialog
我的使用情况是如此简单,我讨厌诉诸第三方库。 其他选项都显得很糟糕我虽然。
任何其他的建议?
也许谁提交的家伙这 13年前的错误报告在这里游逛,并通过它现在想通了。
更新了代码,并记录输出
下面是我使用这个代码。
private void initFileChooser() {
log.debug("Initializing fileChooser.");
fileChooser = new JFileChooser();
log.debug("FileChooser instantiation complete.");
fileChooser.setFileFilter(new FileNameExtensionFilter("PDF Files", "pdf"));
log.debug("File filter setup complete.");
fileChooser.setMultiSelectionEnabled(false);
log.debug("Multi-selection disabled.");
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
log.debug("File selection mode set to files only.");
}
这里的日志输出时,上面的代码没有断开网络驱动器上运行。
05:37:13.126 [AWT-EventQueue-0] DEBUG - Initializing fileChooser.
05:37:13.481 [AWT-EventQueue-0] DEBUG - FileChooser instantiation complete.
05:37:13.482 [AWT-EventQueue-0] DEBUG - File filter setup complete.
05:37:13.482 [AWT-EventQueue-0] DEBUG - Multi-selection disabled.
05:37:13.482 [AWT-EventQueue-0] DEBUG - File selection mode set to files only.
这里的日志输出时,上面的代码通过使用在Windows 7上我创建一个断开连接的网络驱动器断开连接的网络驱动器运行ExpanDrive初始连接后(1.8.4)连接到一台Linux机器和关闭Linux机器而成。
05:37:58.953 [AWT-EventQueue-0] DEBUG - Initializing fileChooser.
05:38:11.108 [AWT-EventQueue-0] DEBUG - FileChooser instantiation complete.
05:38:11.110 [AWT-EventQueue-0] DEBUG - File filter setup complete.
05:38:11.110 [AWT-EventQueue-0] DEBUG - Multi-selection disabled.
05:38:11.110 [AWT-EventQueue-0] DEBUG - File selection mode set to files only.