gpt4 book ai didi

java - 如何使 JFileChooser 在断开网络驱动器时正常运行?

转载 作者:行者123 更新时间:2023-12-01 05:09:00 26 4
gpt4 key购买 nike

当我在网络驱动器断开连接的系统上创建 JFileChooser 时,需要很长时间才能显示 JFileChooser。它会通过单个断开连接的网络驱动器阻止 EDT 大约 20 秒。

这似乎是一个常见问题,但我找不到解决方法。我见过的可能选项是:

  • 使用 JFileDialog
  • 将 FileSystemView 替换为 getRoots() 返回固定驱动器列表的 FileSystemView
  • 在尝试打开 JFileChooser 之前切换到 WAIT 光标
  • 在启动时创建一个 JFileChooser 并永远保留它
  • 尝试使用 xfiledialog

我的用例非常简单,我讨厌求助于第三方库。不过,其他选项对我来说似乎都很糟糕。

还有其他建议吗?

也许是提交 this 的人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.

最佳答案

您阻止了 EDT,可能会出现 RepaintManager 异常,如果 Network Drive 无法访问或返回异常,您必须

  • 使用SwingWorkerRunnable#Thread

  • 通知用户“请稍候,无论如何......”

  • 如果成功,则显示 JFileChooserFiles

  • 否则 GUI 会卡住,直到网络驱动器返回内容或异常

关于java - 如何使 JFileChooser 在断开网络驱动器时正常运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12293092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com