我有一个Java应用程序,它使用带有加载动画的启动画面图像。从Java代码中每隔x ms绘制一次启动屏幕。
在Windows上运行该应用程序,可以正常工作而不会闪烁。但是,在OSX上运行时,每次我从Java代码运行splash.update()
时,初始屏幕都会闪烁。
闪烁非常细微,但很烦人,所以我真的想修复它。
我尝试以不同的速度呼叫spalsh.update()
,但闪烁仍然存在。
有人知道为什么会这样吗?
@Override
public void run(){
final SplashScreen splash = SplashScreen.getSplashScreen();
if (splash == null) {
System.out.println("SplashScreen.getSplashScreen() returned null");
return;
}
Graphics2D g = splash.createGraphics();
if (g == null) {
System.out.println("g is null");
return;
}
while(true) {
//...
//Here some animation happens. But the flicker is still there when I
//comment this out so the problem lies elsewhere
//...
splash.update(); //THIS CAUSES THE FLICKER ON macOS
try {
Thread.sleep(75);
}
catch(InterruptedException e) {
}
if (GUI.frame != null){
if (GUI.frame.isVisible()){
splash.close();
break;
}
}
}
}