当我在网络驱动器断开连接的系统上创建 JFileChooser 时,需要很长时间才能显示 JFileChooser。它用一个断开的网络驱动器阻止 EDT 大约 20 秒。
看起来这将是一个常见问题,但我找不到解决它的方法。我见过的可能选项是:
- 使用 JFileDialog
- 将 FileSystemView 替换为 getRoots() 返回固定驱动器列表的位置
- 在尝试打开 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.