Hi,
den mir hier unterlaufenen Fehler kann ich mir nicht erklären, und suche deshalb hier nach Hilfe. Ich habe mir mittels JWindow einen Splashscreen programmiert, auf welchem mittels JLabel dieses Bild angezeigt wird (bzw. werden soll):
Nun aber mein Problem: Unter Windows (getestet mit 7, 8) funktioniert das Ganze einwandfrei, aber unter meiner virtuellen Linux-Ubuntu Maschine nicht. Hier wird mir der Splashscreen so angezeigt:
Unschwer zu erkennen ist, dass das Window zu groß ist, wobei das Window eigentlich automatisch auf das Bild zugeschnitten wird (/sollte) ...
Nun ja, hier ist der QuellCode meiner SplashScreen-Klasse:
Ebenfalls ein Problem ist die Ladezeit des SplashScreens, wie man aus meinen Logs entnehmen kann, entsteht je nach System eine recht lange Ladezeit:
Daher habe ich die Frage, wie ich entweder meiner Code optimieren kann oder soll ich gar den vorgefertigten SplashScreen von Java (How to Create a Splash Screen (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features)) oder das Tutorial hier in diesem Forum (SplashLoader - LadeBild) verwenden?
Vielen Dank für jede Antwort!
Viele Grüße,
Vailfire
den mir hier unterlaufenen Fehler kann ich mir nicht erklären, und suche deshalb hier nach Hilfe. Ich habe mir mittels JWindow einen Splashscreen programmiert, auf welchem mittels JLabel dieses Bild angezeigt wird (bzw. werden soll):
Nun aber mein Problem: Unter Windows (getestet mit 7, 8) funktioniert das Ganze einwandfrei, aber unter meiner virtuellen Linux-Ubuntu Maschine nicht. Hier wird mir der Splashscreen so angezeigt:
Unschwer zu erkennen ist, dass das Window zu groß ist, wobei das Window eigentlich automatisch auf das Bild zugeschnitten wird (/sollte) ...
Nun ja, hier ist der QuellCode meiner SplashScreen-Klasse:
Java:
package de.vailfire.vtrainer;
import javax.swing.JWindow;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class SplashScreen extends JWindow{
static Logger logger = LogManager.getLogger(SplashScreen.class.getName());
public SplashScreen(){
logger.trace("Intializing SplashScreen ...");
getContentPane().setBackground(Color.WHITE);
getContentPane().setLayout(null);
JLabel label = new JLabel();
ImageIcon splash = new ImageIcon(main.class.getResource("/de/vailfire/vtrainer/images/splash.gif"));
label.setIcon(splash);
label.setSize(getRectangle(splash).getSize());
setBounds(getRectangle(splash));
getContentPane().add(label);
setAlwaysOnTop(true);
setLocationRelativeTo(null);
setVisible(true);
logger.info("SplashScreen intialized.");
}
public void destroy(){
//dispose();
logger.info("SplashScreen disposed.");
}
private Rectangle getRectangle(ImageIcon ii){
return new Rectangle(ii.getIconWidth(),ii.getIconHeight());
}
}
Ebenfalls ein Problem ist die Ladezeit des SplashScreens, wie man aus meinen Logs entnehmen kann, entsteht je nach System eine recht lange Ladezeit:
Code:
[TRACE] 2014-07-23 17:07:35.252 at '[main]' from 'de.vailfire.vtrainer.SplashScreen': Intializing SplashScreen ...
[INFO ] 2014-07-23 17:07:35.337 at '[main]' from 'de.vailfire.vtrainer.SplashScreen': SplashScreen intialized.
Vielen Dank für jede Antwort!
Viele Grüße,
Vailfire