Java Swing:UI无法正确重绘(白色)

时间:2018-10-30 16:02:33

标签: java swing awt

我的应用程序UI客户端遇到问题,在某些情况下(用户登录到锁定的桌面帐户),UI元素(框架,下拉列表)无法正确显示。 它发生在Windows 10 64位1709版上。 我认为这是与系统或图形卡驱动程序接口的低级问题。 我已经尝试设置sun.java2d.d3d = false和许多其他方法(更新驱动程序,更改电源管理属性)没有成功。 我还监视了线程(没有一个线程被锁定),并且我在invokeLater中进行了更新,因此这与由于长时间调用而导致的UI冻结无关。

仅在少数计算机上会出现此问题,而其他具有相同Windows版本的计算机则不会出现此类问题。 用户界面中没有用户可以执行的任何特定操作来触发该问题,这似乎总是我试图确定的一些外部原因。

我要寻找的是一个想法,该如何在较低级别或什至在操作系统端进行调试以查看失败的原因。 我有什么办法可以记录来自操作系统的任何与图形相关的事件(例如传递给JVM的外观变化)

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

尽管我没有找到如何记录此类事件的答案,但我找到了解决问题的方法: 启动UI Java应用程序时,请使用Java而不是javaw来启动它。这样,一些未由log4j记录的更深层次的异常将可见,在我的情况下是: https://bugs.java.com/view_bug.do?bug_id=6429812

线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException         在com.sun.java.swing.plaf.windows.WindowsTableHeaderUI $ XPDefaultRenderer.paint(WindowsTableHeaderUI.java:171)         在javax.swing.CellRendererPane.paintComponent(CellRendererPane.java:151)         在javax.swing.plaf.basic.BasicTableHeaderUI.paintCell(BasicTableHeaderUI.java:710)         在javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:652)         在javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)         在javax.swing.JComponent.paintComponent(JComponent.java:780)         在javax.swing.JComponent.paint(JComponent.java:1056)         在javax.swing.JComponent.paintChildren(JComponent.java:889)         在javax.swing.JComponent.paint(JComponent.java:1065)         在javax.swing.JViewport.paint(JViewport.java:728)         在javax.swing.JComponent.paintChildren(JComponent.java:889)         在javax.swing.JComponent.paint(JComponent.java:1065)         在javax.swing.JComponent.paintChildren(JComponent.java:889)