java - 故障排除: JDialog which is modal and yet not modal?

标签 java swing modal-dialog jdialog

被这个问题难住了,但也许,只是也许,有人以前遇到过这个问题,可以给我指出正确的方向。

我有一个 JDialog 用于显示长时间运行的任务的进度,我已将其明确创建为具有定义的所有者的模式:

  progressDialog = new JDialog( ((Dialog)windowParent), true );
  ...
  progressDialog.setVisible( true );

稍后,任务完成后,我再次关闭对话框:

protected void done() {
  SwingUtilities.invokeLater( new Runnable() {
     public void run() {
        progressDialog.setVisible( false );
     }
  } );
}

在极少数情况下,对话框 a) 不会关闭,b) 不是真正的模式,即用户能够与(理论)对话框后面的窗口进行交互。有什么想法可能导致这种情况吗?不幸的是,这种情况很少发生,而且到目前为止,仅在 Linux 系统上发生。这可能是 Swing 错误还是我可能做错了什么?

最佳答案

尽管我无法为您的问题提供明确的解决方案,但我可以告诉您,我在 Linux 上看到了模式对话框的各种奇怪行为 - 其中许多取决于适当的窗口管理器。

对于我们的销售点系统,我们最终使用了非常简约的“flwm”窗口管理器,因为它提供了最可靠和最理想的属性。不过,不推荐将其用于现代 Linux 桌面。

至于模态本身:如果您可以使用 Java 6,您可能想了解一下 JDK6 模态的更改和增强:Sun Blog以及随附的 Javadoc对于 Dialog.ModalExclusionType

关于java - 故障排除: JDialog which is modal and yet not modal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/649815/

相关文章:

html - 在 Internet Explorer 中使用自动对焦时模态中奇怪的光标放置

java - 无法理解需要使 Process.java 抽象

java - 火烈鸟丝带: Java. lang.IllegalArgumentException : No interpolator found for java. lang.Float :java. lang.Float

java - Maven 项目编译但工作区中缺少导入

java - 如何以最短的方式对 JTable 进行排序?

java - 如何打印标题中有图像的jtable?

javascript - 将选定的数据行传递到模式 Bootstrap 中

wpf - Rhino Mock 和 WPF 窗口对话框

java - 对 lambda 表达式的随机搜索

java - 我必须从服务器获取响应码吗?