【问题标题】:JDialog not paintingJDialog不绘画
【发布时间】:2009-01-05 17:53:01
【问题描述】:

我是 Java 新手,但我认为这很直接。从文本文件导入数据时,我会显示一个 JDialog 供用户输入,但在其他计算机上未正确绘制该对话框。

在我的计算机上,如果我从 NetBeans 中或从命令提示符运行程序,则对话框会正确显示。如果我在它应该运行的计算机上运行程序,则不会绘制对话框的内部-我所看到的只是对话框的边框,然后是控件应该在其后面的屏幕。此计算机正在运行 XPSP2 和 jre6 更新 11。

有谁知道可能出了什么问题?

TIA

【问题讨论】:

  • 您的计算机正在运行什么(操作系统和 JRE)?
  • 我建议使用控制台上的 ctrl-break(Linux/Solaris 上的 ctrl-\)或 jstack 或 jconsole 获取堆栈跟踪。

标签: java swing


【解决方案1】:

我们需要查看您的代码来确定,但您很可能是在某些侦听器代码中对 UI thread 执行导入 - 因为您使用的是 UI 线程,所以在您从听者。

解决方案是启动一个新线程来进行导入,然后让它触发事件来更新 GUI。

【讨论】:

    【解决方案2】:

    您是否在Event Dispatch Thread 中完成所有与 Swing 相关的工作?如果是这样,你确定你没有阻塞这个线程,或者在其中做一些缓慢的事情吗?

    【讨论】:

      【解决方案3】:

      通过命令终端运行程序,以便查看程序是否抛出任何异常。

      命令将是:java -jar pathtoyourjar.jar

      【讨论】:

        【解决方案4】:

        代码在一个地方有效,但在另一个地方无效。电脑不是魔法。因此,两台计算机之间肯定存在一些差异。该代码是 Swing GUI 代码。三个最可能的差异是:

        • 不同的视频硬件
        • 不同的代码(可能是 JRE 库)
        • 不同的 Swing 外观和感觉(可能由不同的操作系统引起)

        如果两台机器上与视频硬件的 Java 连接有所不同,请尝试找出原因。您的机器和目标机器是否都具有最新的视频驱动程序等?目标机器是否有两个显示器,或者视频硬件的其他差异可能导致执行不同的代码?

        两台计算机(例如 JRE 或操作系统)之间的差异可能会导致执行不同的代码。您已经告诉我们目标机器的 JRE 和操作系统:您的机器呢?你能找到第三台机器,或者安装另一个 JRE,以便我们知道它是机器还是 JRE?

        两台机器上的 Swing 外观和感觉可能不同。尝试不同的外观和感觉。

        UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
        

        只是提到问题可能出在您的代码的某个地方,与 Swing 库相比,错误更有可能是您的代码,但这至少可以帮助您弄清楚为什么一切都可以在一台机器上运行而不是在另一台机器上运行.

        【讨论】:

          猜你喜欢
          • 2023-03-18
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-07
          • 1970-01-01
          相关资源
          最近更新 更多