Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java程序的UI组件显示为空白框_Java_User Interface - Fatal编程技术网

java程序的UI组件显示为空白框

java程序的UI组件显示为空白框,java,user-interface,Java,User Interface,当我在计算机上运行Java程序(如DbVisualizer和OpenProj)时,一些UI组件(如按钮、图像、复选框、滚动条等)显示为空白框。当您打开程序时,这些组件中的一些通常会首先出现,然后当您将鼠标移到它们上时,它们会变成空白 我已经更新了JRE和视频驱动程序,还使用-Dsun.java2d.noddraw=true调整了JAVA_选项-Dsun.java2d.d3d=false,正如Java论坛中建议的那样,但到目前为止,这些建议的解决方案都没有奏效 我不认为这是操作系统特有的问题,因为

当我在计算机上运行Java程序(如DbVisualizer和OpenProj)时,一些UI组件(如按钮、图像、复选框、滚动条等)显示为空白框。当您打开程序时,这些组件中的一些通常会首先出现,然后当您将鼠标移到它们上时,它们会变成空白

我已经更新了JRE和视频驱动程序,还使用
-Dsun.java2d.noddraw=true调整了JAVA_选项-Dsun.java2d.d3d=false,正如Java论坛中建议的那样,但到目前为止,这些建议的解决方案都没有奏效

我不认为这是操作系统特有的问题,因为我检查了其他一些配置完全相同的操作系统(Windows Vista)和硬件的电脑,其中许多电脑没有出现这个问题

此情况的屏幕截图如下所示:


有什么想法吗?

在使用windows basic主题时,我经常会发现许多图形故障。移动一个窗口会在后台窗口和UI控件上创建一条自己后面的轨迹,有时直到鼠标移到上面才会出现


如前所述,尝试使用windows aero主题,如果您不喜欢aero外观,请关闭透明度。

这些JAVA选项必须用空格分隔,而不是分号


使用jVisualVM连接到应用程序,并验证“JVM参数”部分是否包含所有所需的选项。

这看起来更像是图形驱动程序问题。请注意,缺少的是通过将位图数据直接传输到图形卡绘制的图像(图标、复选框)。在这种情况下,
sun.java2d.noddraw=false
sun.java2d.d3d=false
实际上更像是一种黑客行为

我要做的是:

  • 检查我是否使用了最新版本的Java(如果您使用的是64位系统,那么切换到64位Java不会有什么坏处)
  • 检查图形驱动程序,确保它们是最新版本
  • 检查Windows service Pack

也可以尝试使用改变的方法;也许这会有帮助。

我怀疑禁用DirectDraw会解决这个问题,而您尝试禁用它的尝试没有成功

正如Ryan所指出的,选项的格式似乎不正确。删除分号并在两者之间加上空格,或者最好只使用
sun.java2d.d3d=false
sun.java2d.noddraw
标志已过时,现在设置为true与设置
sun.java2d.d3d=false的效果相同。没有必要同时设置这两个参数

错误格式的影响可以在下面的代码中看到:

public class WrongArgs {
    public static void main(String[] args) {
        System.out.println("sun.java2d.noddraw: " + System.getProperty("sun.java2d.noddraw"));
        System.out.println("sun.java2d.d3d: " + System.getProperty("sun.java2d.d3d"));
    }
}
使用参数运行此代码:“-Dsun.java2d.noddraw=true;-Dsun.java2d.d3d=false;”生成:

sun.java2d.noddraw:true-Dsun.java2d.d3d=false

sun.java2d.d3d:null

使用args“-Dsun.java2d.noddraw=true-Dsun.java2d.d3d=false”运行

sun.java2d.noddraw:true

sun.java2d.d3d:false


你们能告诉我,若你们从窗口改变焦点并再次回到窗口会发生什么吗???因为我有这样的问题。我的问题的解决方案是在编码时,我写了一个setVisible true,但不在正确的位置。似乎是双缓冲/擦除/缺少重绘。可能是Windows无效事件或其他事件。所以可能是Windows中的一些东西,一个在后台运行的屏幕捕获工具。选择其他Windows主题。哪个Java版本?或者你已经试过不同的版本了吗?我之前也遇到过同样的问题,在同一台机器上连接了两台显示器。应用程序在一个监视器上运行良好,在第二个监视器上运行空白框。基本上,如果我把窗口一半放在一个显示器上,另一半放在另一个显示器上,那么窗口的一半是好的,另一半是空白框。这是图形卡设备驱动程序的问题。尝试重新安装或重置其所有设置。该应用程序在任何其他具有类似硬件的计算机上都很好。吹毛求疵:切换到64位版本的java实际上可能会造成伤害,因为windows上没有为其提供自动更新功能。甲骨文是由纯赢和甜蜜的用户友好!不过不要熏肉。