PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Programmstart (Ladebildschirm)



Sym
05-05-2004, 19:01
Hi,

Gibt es unter Java irgendwie eine Möglichkeit einen Ladebildschirm für mein Programm zu erzeugen. Bisher habe ich ein JFrame dafür genommen. Doch eigentlich soll es nur ein Kasten sein, in den ich Swing-Komponenten einbauen kann.

fs111
05-05-2004, 19:27
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.net.URL;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JWindow;

public class Splash extends JWindow//class is based on swing so it has to extend JWindow
{
//some private variables
private Container container;
private JLabel label;
private JLabel infoLabel ;
private JPanel panel;
/** constructor of an new Splash object
* @ param ImageIcon logo
* shows the logo at the startup of the program
*/

public Splash()
{
infoLabel = new JLabel("Eine Tolle Meldung");
URL logourl = getClass().getResource("Pfad/zu/bild.png");
ImageIcon logo = new ImageIcon(logourl);
container = this.getContentPane();
container.setLayout(new BorderLayout());


label = new JLabel(logo); //this label includes the Splash screen picture

panel = new JPanel(new BorderLayout());

panel.setBorder(BorderFactory.createLineBorder(Col or.black));

panel.add(label, BorderLayout.CENTER);
panel.add(infoLabel, BorderLayout.SOUTH) ;

container.add(panel);

pack();

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
//gets the screen size of the screnn of the machine the programm is displayed on
int w = getSize().width;
int h = getSize().height;
int x = (dim.width-w)/2;
int y = (dim.height-h)/2;
setBounds(x, y, w, h); //sets the Splash screen in the middle of the display

}

public void showSplash()
{
setVisible(true);
}

public void updateInfoLabel(String info)
{
infoLabel.setText(info);
}


}//end of class Splash.java

Damit kannst Du einen solchen Splash-Screen erzeugen. Einfach in der der main erzeugen und mit showSplash() anzeigen lassen und wenn alles geladen ist wieder verbergen. Falls das Laden länger dauert kannst Du mittels der updateInfoLabel die Ausgaben aktualisieren.

HTH

Grüße fs111

peschmae
05-05-2004, 19:29
Was meinst du mit Kasten?

Übrigens geht recht viel von der Startzeit fürs Laden der JVM drauf - zumindest bei kleineren Apps - und da ist der Splashscreen ja noch nicht da.

MfG Peschmä

Sym
08-05-2004, 10:45
Danke,

das ist genau das Richtige.

@peschmae:

Da das Programm recht groß ist und auch schon etwas braucht, ist das in diesem Fall vernachlässigbar. ;)