Java [Jigloo] JPanel benutzen - doch wie?

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,

ich habe ein Java-Programm geschrieben (ganz simpel)!

Nun möchte ich mit Jigloo ein Panel erstellen, dass beim starten der Anwendung angezeigt wird (wie bei Eclipse beim starten der Bereicht mit dem Logo) und nach 2 Sekunden verschwindet - sprich "sleep(2000)" - und mein Hauptfenster angezeigt wird. Doch wie bekomme ich das hin?

In der Dokumentation von Jigloo steht nichts und googeln ergibt auch nichts (richtiges)!

CPU
 
AW: [Java/Jigloo] JPanel benutzen - doch wie?

Der dolgende Code:

Code:
// SplashScreen.java

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JWindow;

public class SplashScreen extends JWindow implements Runnable
{
	public void run()
	{
		setSize(400, 110);
		setLocationRelativeTo(null);
		setVisible(true);
		
		try
		{
			Thread.sleep(3000);
		}
		catch (InterruptedException e)
		{
			dispose();
		}
		dispose();	
	}
	
	public void paint(Graphics g)
	{
		Image splashImage = getToolkit().getImage("h:/h-ff-dl.png");
		g.drawImage(splashImage, 0, 0, this); 
	}
}
von http://www.tutorials.de/forum/java/146899-splash-screen.html

funktioniert wunderbar. Naja, bis auf zwei Punkte:

1. Wenn der SplashScreen mit
Code:
Thread splashThread = new Thread(new SplashScreen());
splashThread.start();
gestartet wird, ist auch gleich schon das richtige Fenster zu sehen.

2. Gibt es eine Möglichkeit, das Bild mit in eine Jar-Datei zu packen, wenn man es exportiert bzw. wo kann ich das Bild ablegen, wenn ich nicht immer den vollen Pfand angeben möchte?

CPU
 
AW: [Java/Jigloo] JPanel benutzen - doch wie?

mit dem relativen pfad "/" kommst du dorthin wo dann die jardatei liegt.
ob du, was ins jar packen kannst weiss ich nicht, kannst ja mal probieren mit "/<Jar>/<Bild>" aber ob das klappt weiss ich auch nicht... und bin auch zu faul zum testen ^^
aber wizo nen splashscreen, wenn du im hintergrund eh nichts laden musst... :-P

du kannst aber auch warten bis der Thread abgeschlossen ist und dann weiter machen... aber irgendwie find ich den splashscreen sinnlos ^^ ok, zum testen aber... naja :-D

izi, greez krizi...
 
AW: [Java/Jigloo] JPanel benutzen - doch wie?

Vergiss das Beispiel von der anderen Seite da.
Um ein Splashscreen in ner jar zu zeigen, einfach "SplashScreen-Image: <image name>" in die Manifest schreiben. Das Bild selbst auch in die jar packen und als name den pfad angeben zum bild.

Code:
final SplashScreen splash = SplashScreen.getSplashScreen();
try {
  Thread.sleep(2000);
}
catch(InterruptedException e) {
}
splash.close();
JFrame yourFrame = new YourFrame(); // oder mit setVisible(true); sichtbar machen
-instanz holen vom SplashScreen
-2 sec warten
-SplashScreen ausblenden
-Dein Frame erstellen oder sichtbar machen
 
AW: [Java/Jigloo] JPanel benutzen - doch wie?

Kann man einen SplashScreen nicht mit Jigloo erzeugen um evt. noch ein Label/Ladebalken einzubauen?

Das Bild selbst auch in die jar packen und als name den pfad angeben zum bild.
Wenn man wüste wie's geht ... gerne!

du kannst aber auch warten bis der Thread abgeschlossen ist und dann weiter machen... aber irgendwie find ich den splashscreen sinnlos ^^ ok, zum testen aber... naja :-D
Nein, ich nicht! Zum einen kann mein sein super desigentes Logo zeigen. Zum Anderen Informationen über das Programm anzeigen (z.B. Ladezustand, Lizenz, Benutzername etc.).

CPU
 
AW: [Java/Jigloo] JPanel benutzen - doch wie?

Kann man einen SplashScreen nicht mit Jigloo erzeugen um evt. noch ein Label/Ladebalken einzubauen?
Doch kann man auch machen, bleibt dir überlassen wie. Aber auch mit der beschriebenen Methode kann man Ladebalken anzeigen usw. Steht an sich ziemlich alles im Link oben, inklusive Beispiel mit Ladebalken.

Jetzt zur jar:
- ordner im project anlegen "images"
- bild reinkopieren (image.jpg)
- beim jar export von eclipse auch den ordner auswählen
- in jar manifest schreiben "SplashScreen-Image: images/image.jpg"
 
AW: [Java/Jigloo] JPanel benutzen - doch wie?

Von allen Vorschlägen hier und von allen Tutorials im Web hat bei mir folgender Code funktionidert:

Code:
// SplashScreen.java

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JWindow;

public class SplashScreen extends JWindow implements Runnable
{
	public void run()
	{
		setSize(400, 110);
		setLocationRelativeTo(null);
		setVisible(true);
		
		try
		{
			Thread.sleep(3000);
		}
		catch (InterruptedException e)
		{
			dispose();
		}
		dispose();	
	}
	
	public void paint(Graphics g)
	{
		Image splashImage = getToolkit().getImage("h:/h-ff-dl.png");
		g.drawImage(splashImage, 0, 0, this); 
	}
}

Ich weiß zwar wie man das SplashScreen öffnet bzw. wieder schließt - indem man folgenden Code einfügt:
Code:
Thread splashThread = new Thread(new SplashScreen());
splashThread.start();
- doch nicht wie man dafür sorgt, dass der Main JFrame erst nach Ausblenden aufgerufen wird.

Diese zwei Zeilen habe ich in meiner Main-Methode. Die while-Schleife mit dem isAlive() Element funktioniert nicht ...

Hat vllt. jemand einen gute Idee, die funktionieren könnte?

CPU
 
[Java] Bild aus Jar-Datei laden - Doch wie?

Hallo,

nachdem ich mich nun damit nun mehrere Tage rumgeqält habe, habe ich endlich die Lösung gefunden! Ich baue den Splash-Screen in einen Thread und das eigentliche Fenster. Und dann lasse ich den Thread mit dem Fenster warten, bis der Spalshscreen fertig ist!
Super! :):):)

Doch ich bin auf ein weiteres Problem gestoßen:
Code:
Image splashImage = getToolkit().getImage("h:/h-ff-dl.png");

Da ich ja nicht immer mein Bild unter h:/... liegen habe möchte ich wissen, wie man auf ein Bild zugreift, dass in der Jar-Datei liegt!

Unter Google findet man zwar ein Paar Ergebnisse, die nicht näher mit meinem Problem verbunden sind.

Hilfe :(
CPU
 
probiert mal sowas in der Art:

String path2image = "meinbildchen.jpg";
java.net.URL url = ClassLoader.getSystemResource(path2image);
Image img = new ImageIcon(url).getImage();


natürlich muss man noch die entsprechenden Exceptions behandeln.
 
Zurück
Oben