Splash Screen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

hab folgendes Problem. Ich wollte einen Splash Screen für ein Programm machen und hab mich dabei an das Tutorial in der Java Link Base gehalten. Dabei verwende ich folgenden Code

Code:
import java.awt.*;
import java.awt.image.*;

public class Splash extends Window {

	Image image;
	BufferedImage back = null;
	
	public Splash() {
		super(new Frame());
		image = Toolkit.getDefaultToolkit().getImage("logo.png");
	}
	
	 public boolean imageUpdate(Image img, int infoflags,
	 		  int x, int y, int w, int h) {
	 		  if ((infoflags & ALLBITS) != 0) {
	 		    show();
	 		  }
	 		  return super.imageUpdate(img, infoflags, x, y, w, h);
	 		 }
	 
	 public void show() {
	 	  int w = image.getWidth(this), h = image.getHeight(this);
	 	  if (w != -1 && h != -1) {
	 	   Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
	 	   setBounds((d.width - w) / 2, (d.height - h) / 3, w, h);
	 	   try {
	 	     back = new Robot().createScreenCapture(getBounds());
	 	   } catch (AWTException e) {
	 	    // ...
	 	   }
	 	   super.show();
	 	  }
	 	 }
	 
	 public void paint(Graphics g) {
	 	  if (back != null) g.drawImage(back, 0, 0, this);
	 	  g.drawImage(image, 0, 0, this);
	 	 } 
	
	public static void main(String[] args) {
		new Splash().show();
	}
}

Sache ist jetzt die, wenn ich das mit Java 1.4 compiliere funktioniert es einwandfrei. Wenn ich es aber mit Java 1.5 compiliere terminiert der Prozess beim ausführen ohne das am Bildschirm was zu sehen ist. Hab keine Ahnung woran das liegt und kenn mich auch mit Java 5 nicht so gut aus, als dass ich irgendeine Idee hätte woran das liegen könnte.
Vielleicht kann mir jemand sagen wie ich das Java 5 tauglich mache?
 
D

Don't let the sun go down

Gast
Ich habe keine direkte Antwort, aber:

$ javac Splash.java
Note: Splash.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

$ javac -Xlint:deprecation Splash.java
Splash.java:22: warning: [deprecation] show() in java.awt.Window has been deprecated
public void show() {
^
Splash.java:22: warning: [deprecation] show() in java.awt.Component has been deprecated
public void show() {
^
Splash.java:32: warning: [deprecation] show() in java.awt.Window has been deprecated
super.show();


In der Java Refrenz steht:

void
show()
Deprecated. As of JDK 5, replaced by Component.setVisible(boolean).

Finde doch mal raus, was sich noch geändert hat.
 

nagash56

Aktives Mitglied
Stimmt schon und war mir dessen bewusst... wenn ich den Code ändere, ändert das aber nichts an dem Problem :-(

Folgender Code funktioniert in 1.4 ... aber nicht in 1.5

Code:
import java.awt.*;
import java.awt.image.*;

public class Splash extends Window {

	Image image;
	BufferedImage back = null;
	
	public Splash() {
		super(new Frame());
		image = Toolkit.getDefaultToolkit().getImage("logo.png");
	}
	
	 public boolean imageUpdate(Image img, int infoflags,
	 		  int x, int y, int w, int h) {
	 		  if ((infoflags & ALLBITS) != 0) {
	 		    setVisible(true);
	 		  }
	 		  return super.imageUpdate(img, infoflags, x, y, w, h);
	 		 }
	 
	 public void setVisible(boolean b) {
	 	  int w = image.getWidth(this), h = image.getHeight(this);
	 	  if (w != -1 && h != -1) {
	 	   Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
	 	   setBounds((d.width - w) / 2, (d.height - h) / 3, w, h);
	 	   try {
	 	     back = new Robot().createScreenCapture(getBounds());
	 	   } catch (AWTException e) {
	 	    // ...
	 	   }
	 	   super.setVisible(true);
	 	  }
	 	 }
	 
	 public void paint(Graphics g) {
	 	  if (back != null) g.drawImage(back, 0, 0, this);
	 	  g.drawImage(image, 0, 0, this);
	 	 } 
	
	public static void main(String[] args) {
		new Splash().setVisible(true);
	}
}
 
D

Don't let the sun go down

Gast
Wenn ich im Construtor pack() aufrufe, dann erscheint das Fenster. Vielleicht sollte man noch sowas wie setDefaultCloseOperation() einbauen. Spricht der AWT Laie.
 

nagash56

Aktives Mitglied
Hey super.. du bist ja genial :toll:

Hab pack() in den Konstruktor gepackt und siehe da der Prozess terminiert nicht mehr und das Fenster erscheint. Mir ist zwar nicht ganz klar warum aber Hauptsache es funktioniert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Danloc Swing Splash Screen Prozentanzeige AWT, Swing, JavaFX & SWT 4
Hijo2006 Splash-Screen AWT, Swing, JavaFX & SWT 2
stylegangsta Splash Screen erscheint nicht AWT, Swing, JavaFX & SWT 30
S Splash Screen / "Loading" Anzeige im Programm AWT, Swing, JavaFX & SWT 27
L Animierter Splash-Screen (mit NetBeans 6.1 z.B.) AWT, Swing, JavaFX & SWT 2
F splash screen mit progress bar - probleme mit invoke later AWT, Swing, JavaFX & SWT 7
H Transparente Splash-Screen AWT, Swing, JavaFX & SWT 5
I Splash Screen AWT, Swing, JavaFX & SWT 7
O der neue eclipse 3.1 splash screen AWT, Swing, JavaFX & SWT 3
V Thread als kleines splash AWT, Swing, JavaFX & SWT 13
I Screen nur 1x öffnen können AWT, Swing, JavaFX & SWT 17
M Loading Screen anzeigen bei Black Screen AWT, Swing, JavaFX & SWT 1
S 3D-Grafik Marker zu aus Screen anvisiertem Object AWT, Swing, JavaFX & SWT 1
J 2D-Grafik Windows Blue-Screen nach anzeigen eines Bildes in Java AWT, Swing, JavaFX & SWT 10
F GWT Screen size AWT, Swing, JavaFX & SWT 2
E Swing Grundlegendes Vorhehen. Login-Screen, danach Arbeits-Screen AWT, Swing, JavaFX & SWT 4
R MouseEvent.getX() liefert in Applet Screen-Koordinate AWT, Swing, JavaFX & SWT 2
G AWT Full-Screen Exclusive Mode AWT, Swing, JavaFX & SWT 3
P Swing || AWT unschlüssig + Layoutfrage [m. Screen] AWT, Swing, JavaFX & SWT 16
J Screen Capture AWT, Swing, JavaFX & SWT 5
G Screen nach Auswahl schließen und neuen öffnen?wie mach ichs AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben