[Java] Splashscreen mit Textfeldern

fischkrampf

Mitglied
Hi all,

ich habe mal angefangen einen einfachen Splashscreen zu schreiben.

Code:
public class Splash extends JWindow {

	Image i;

	public Splash() {
		setSize(600, 400);
		setLocation(
			(Toolkit.getDefaultToolkit().getScreenSize().width - 600) / 2,
			(Toolkit.getDefaultToolkit().getScreenSize().height - 400) / 2);
		setVisible(true);

		i = Toolkit.getDefaultToolkit().getImage("./splash.jpg");
	}

	public void paint(Graphics g) {
		g.drawImage(i, 0, 0, this);
	}

	public static void main(String[] args) {
		new Splash();
		System.out.println("Splash gestartet");
	}

Auf diesem Splashscreen möchte ich nun noch z.b. Textfelder haben. Diese werden jedoch nicht angezeigt, weil das Bild darüber liegt. Was kann ich tun um das problem zu beheben??

Danke schonmal für alle Hilfen.

fischkrampf
 
Servus!

Sorry hab den Thread erst jetzt gesehen ... ;-)
Wenn du eingaben von der Tastatur lesen willst benutze immer JFrame... JWindow birngt noch nicht die nötigen KeyEventListener mit ...


Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class Splash extends JFrame {

	Image i = null;
	JTextField jtf1 = null;
	MediaTracker mt = null;
	JPanel jp = null;

	public Splash() {
		setSize(285, 250);
		setUndecorated(true);
		setLocation(
			(Toolkit.getDefaultToolkit().getScreenSize().width - 600) / 2,
			(Toolkit.getDefaultToolkit().getScreenSize().height - 400) / 2);
		
		mt = new MediaTracker(this);
		jp = new JPanel();
		jtf1 = new JTextField("Hallo");
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().add(jp,BorderLayout.CENTER);
		
		i = Toolkit.getDefaultToolkit().getImage("c:\\Beispiel.jpg");
		mt.addImage(i,0);
		try{
			mt.waitForAll();
		}catch(InterruptedException ie){
			System.out.println(ie);	
		}
		
		//this.getContentPane.getGraphics().drawImage();
		this.getContentPane().add(jtf1,BorderLayout.SOUTH);
		jtf1.setEditable(true);
		setVisible(true);

		
	}

	public void paint(Graphics g) {
		this.jp.getGraphics().drawImage(i, 0, 0,280,220,this.jp);
	}

	public static void main(String[] args) {
		new Splash();
		System.out.println("Splash gestartet");
	}
}

Gruss Tom
 
Axo, das erklärt schonmal einiges...

Mittlerweile bekommen ich nämlich ein Textfeld angezeigt, es reagiert nur nicht auf Eingaben.:(

Danke für die Hilfe.
 
Und wie wird dieser Splashscreen dann in das Programm eingebunden und wie wird er angezeigt und wieder geschlossen wenn das Programm geladen ist.
 
Der Splash-Screen wird in einem eigenen Thread gestartet, bevor du dein Programm startest und lädst.

Am einfachsten ist es, den Splash-Screen für eine gewisse Zeit anzuzeigen (somit den Thread "schlafen" zu legen) und dann zu beenden.
Alternativ kannst du sobald dein Programm geladen ist, den Splash-Screen-Thread von aussen stoppen.
 

Neue Beiträge

Zurück