我现在遇到了一个类似于上一个问题的问题:
Why would our Java app not display windows on secondary monitor?
答案是:
- Dsun.java2d.d3d=false
- Dsun.java2d.noddraw=true
因此,我创建了快捷方式来启动应用程序:
C:\WINDOWS\system32\javaw.exe -Dsun.java2d.d3d=false -Dsun.java2d.noddraw=true -jar <file name>
有没有办法强制应用程序在代码中使用它而不必使用参数?
2条答案
按热度按时间vc9ivgsu1#
可以,您可以在程序的开头使用
System.setProperty(property, value);
。例如:vd2z7a6w2#
System.setProperty("sun.java2d.noddraw", "true");
就足够了。我们在Java应用程序中看到了大量的屏幕撕裂(或工件被绘制),这些应用程序使用了更多新的、功能强大的计算机(例如使用NVidia GTX 3090卡等),但不适用于所有DirectX 12设置。
让这个问题具体化的常见方式是,当我们显示工具提示弹出窗口或当菜单面板超出客户端框架(或画布)时,屏幕撕裂开始发生。基本上,整个应用程序屏幕都是从动作点开始绘制的(例如,在 Flink 光标或您移动鼠标的图形元素的点)。
我们在试图解决这个问题时,在多个位置实现了revalidate(); return();但还是有很多方法可以打破它。但是,以上的内容一劳永逸地解决了我们的问题。