Wie verwende ich SplashScreen, ohne eine NullPointerException auszulösen?
Egal was ich versuche,SplashScreen.getSplashScreen()
istimmer null
.
Wenn ich online suche, sehe ich, dass dies ein häufiges Problem ist und dass es etwas damit zu tun hat, dass man das nicht gibtSplashScreen
ein zu verwendendes Bild ... Daher kam es mir beim Navigieren in den Methoden so vorsetImageURL(URL)
sollte benutzt werden. Das funktioniert immer noch nicht.
Es gibt ähnliche Fragen zu SO, wie zdiese, die nicht hilfreich sind und nahe legen, eine Vielzahl von Plugins zu verwenden oder eine solche Klasse von Grund auf neu zu erstellenFrame
. Sogar dieOracle-Tutorial ist kryptisch und beschreibt nicht jeden logischen Schritt bei der VerwendungSplashScreen
korrekt...
Wenn es nicht möglich oder unnötig schwierig zu bedienen istSplashScreen
Gibt es eine Alternative dazu? Oder hat jemand eine einfache Herangehensweise an dieses Problem gehackt?
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