java 强制JAR中的系统属性

jw5wzhpr  于 2023-05-21  发布在  Java
关注(0)|答案(2)|浏览(405)

我现在遇到了一个类似于上一个问题的问题:
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>

有没有办法强制应用程序在代码中使用它而不必使用参数?

vc9ivgsu

vc9ivgsu1#

可以,您可以在程序的开头使用System.setProperty(property, value);。例如:

public static void main(String[] args)
{
    System.setProperty("sun.java2d.d3d", "false");
    System.setProperty("sun.java2d.noddraw", "true");

    // Start your real application
}
vd2z7a6w

vd2z7a6w2#

System.setProperty("sun.java2d.noddraw", "true");就足够了。
我们在Java应用程序中看到了大量的屏幕撕裂(或工件被绘制),这些应用程序使用了更多新的、功能强大的计算机(例如使用NVidia GTX 3090卡等),但不适用于所有DirectX 12设置。
让这个问题具体化的常见方式是,当我们显示工具提示弹出窗口或当菜单面板超出客户端框架(或画布)时,屏幕撕裂开始发生。基本上,整个应用程序屏幕都是从动作点开始绘制的(例如,在 Flink 光标或您移动鼠标的图形元素的点)。
我们在试图解决这个问题时,在多个位置实现了revalidate(); return();但还是有很多方法可以打破它。但是,以上的内容一劳永逸地解决了我们的问题。

相关问题