【发布时间】:2013-04-04 13:34:15
【问题描述】:
无论我尝试什么,SplashScreen.getSplashScreen()总是null。
通过在线搜索,我发现这是一个常见问题,并且与不给 SplashScreen 使用图像有关......因此,在导航方法时,我认为应该使用 setImageURL(URL) .这仍然行不通。
SO上有类似的问题,例如this,它们没有帮助,似乎建议使用无数的插件或从Frame扩展从头开始创建这样的类。即使Oracle tutorial 也很神秘,并且没有概述正确使用SplashScreen 的每个逻辑步骤......
如果不可能或不必要地难以使用SplashScreen,是否有其他选择?或者有没有人破解了一个简单的方法来解决这个问题?
这是我的尝试:
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.SplashScreen;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;
/**
*/
public final class MainGUI implements ActionListener {
/**
* @throws IOException
* @throws IllegalStateException
* @throws NullPointerException
*/
private final static void showSplashScreen() throws NullPointerException, IllegalStateException, IOException {
final SplashScreen splash = SplashScreen.getSplashScreen();
Graphics2D graphics = splash.createGraphics();
// adding image here:
URL imageSource = new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Space_Shuttle_Atlantis_approaching_the_Kennedy_Space_Center_to_land_following_STS-122.jpg/800px-Space_Shuttle_Atlantis_approaching_the_Kennedy_Space_Center_to_land_following_STS-122.jpg");
splash.setImageURL(imageSource);
// coordinates and dimensions:
int x = 100, y = x;
int width = 500, height = width;
// (x, y), width, height:
graphics.create(x, y, width, height);
graphics.setBackground(Color.BLUE);
// adding and centering the text:
graphics.drawString("centered text", (x + width)/2, (y + height)/2);
}
@Override
public void actionPerformed(ActionEvent e) {
}
/**
* @param args
*/
public static void main(String[] args) {
try {
showSplashScreen();
} catch (NullPointerException | IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} // end of MainGUI
【问题讨论】:
标签: java null nullpointerexception splash-screen