如何以编程方式在 java 应用程序上禁用 3D 加速?

How to programatically disable 3D acceleration on a java application?

随着 Java 8 的最新更新,我使用 Java swing 和 awt 制作的扫雷游戏现在在视觉上滞后了很多。 (当我击中地雷时,现在我可以看到每个地雷一个接一个地布满,而之前它们似乎是同时出现的。) 我只是把游戏放在一个 jar 文件中。如果我用bat文件打开游戏,我可以设置: -Dsun.java2d.accthreshold=0 -Dsun.java2d.d3d=false -Dsun.java2d.ddoffscreen=false -Dsun.java2d.noddraw=true (-Dsun.java2d.d3d=false 是主要的。不确定是否需要另一个或什至有所作为......) 这会像以前一样将游戏加速到 运行,但现在在后台有命令提示符,并且找不到存储分数的文件夹。 如果我使用 jar 文件的 Windows 快捷方式,我不知道如何设置这些属性,但它 运行s 在后台没有命令提示符并且可以找到分数文件夹。

我希望做的是在 java class 中添加 System.setProperty() 调用以使其正常工作,但无济于事:

System.setProperty("sun.java2d.d3d", "false");
System.setProperty("sun.java2d.ddoffscreen", "false");
System.setProperty("sun.java2d.noddraw", "true");

这似乎设置了属性,但产生了 bat 文件所产生的 none 结果。

编辑:奇怪的是,调用 System.setProperty("sun.java2d.accthreshold", "0");在 Main 中,其余所有打印:New Default Acceleration Threshold: 0 到控制台。

我如何设置它们才能让这个游戏在任何机器上都能 运行 正确?

我找到了答案here.

我做错了什么(很抱歉没有在我的问题中说明),我没有主要方法。我将游戏对象的构造函数作为主要方法,这是我尝试设置属性并创建显示组件并渲染它们的地方。 通过创建一个标准的 main 方法并在其中设置属性,然后调用游戏对象的构造函数,我能够再次快速地运行。