JFrame bleibt leer

kekrops

Grünschnabel
Hi,

habe ein Problem mit einem JFrame. Und zwar will ich nachdem ich mein Program beende (das Frame schliesse) einen kleinen Splashscreen anzeigen. nur leider bleibt er leer (es sollte eigentlich ein Label mit dem übergebenen String angezeigt werden). Genau den selben Screen lass ich mir aber schon am Anfang anzeigen und da klappt alles. An dem liegt es also nicht. Hat da evtl. jmd. eine Ahnung woran es liegen kann?

hier mal der code meiner Testumgebung:
Code:
public static void main(String args[]) {
    SplashScreen intro = new SplashScreen("Anfang");
    intro.showFor(5000);
    final JFrame test = new JFrame("Test");
    test.setVisible(true);
    test.addWindowListener(new WindowAdapter() {

        public void windowClosing(WindowEvent event) {
            test.dispose();
            SplashScreen intro = new SplashScreen("Ende");
            intro.showFor(5000);
            System.exit(0);
        }
    });
}

Kai
 
Moin,
Du ziehst Dir mit test.dispose() die Beine selbst weg. Denn test wird damit beseitigt. Dummerweise verschwindet damit auch der WindowListener, in dem nach dem dispose() der SplashScreen angezeit werden soll. Probiers mal mit test.hide() statt test.dispose()
 
Hallo!

Schau mal hier:
Code:
/**
  * 
  */
 package de.tutorials;
 
 import java.awt.BorderLayout;
 import java.awt.event.WindowAdapter;
 import java.util.Timer;
 import java.util.TimerTask;
 
 import javax.swing.ImageIcon;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 
 /**
  * @author Tom
  * 
  */
 public class SimpleSplashExample extends JFrame {
 
 	public SimpleSplashExample() {
 		super("SimpleSplashExample");
 		addWindowListener(new WindowAdapter() {
 			public void windowClosing(java.awt.event.WindowEvent e) {
 				dispose();
 				new SplashScreen("Exiting...", 2000L, true, null);
 			};
 		});
 		setSize(640, 480);
 		setVisible(true);
 	}
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) throws Exception {
 		new SplashScreen("Starting...", 5000L, false, SimpleSplashExample.class);
 	}
 
 	static class SplashScreen extends JFrame {
 		static Timer timer = new Timer();
 
 		public SplashScreen(String caption, long duration,
 		    	final boolean shouldExit, final Class applicationClass) {
 			setUndecorated(true);
 			add(new JLabel(new ImageIcon("c:/Sonnenuntergang.jpg")),
 					BorderLayout.CENTER);
 			add(new JLabel(caption), BorderLayout.SOUTH);
 			pack();
 			setVisible(true);
 			setLocationRelativeTo(null);
 			timer.schedule(new TimerTask() {
 				public void run() {
 					setVisible(false);
 					dispose();
 					if (shouldExit) {
 		    			System.exit(0);
 					}
 					if (applicationClass != null) {
 						try {
 		    		    	applicationClass.newInstance();
 		    			} catch (Exception e) {
 		    		    	e.printStackTrace();
 		    		    	throw new RuntimeException(e);
 						}
 					}
 				}
 			}, duration);
 		}
 	}
 }

gruß Tom
 
Zurück