aufwendige gui vor dem anzeigen laden

Status
Nicht offen für weitere Antworten.
E

ElViZ

Gast
hi,

hab volgendes problem:
meine gui ist relativ aufwendig gestalltet (viele panels, labels, etc.), das merkt man auch beim start des programms - es wird zuerst nur die grundfläche in grauer farbe dargestellt (für einige sekunden), und danach wird dann mein eigentliches layout sichtbar.
kann man das zb. so machen, das erst ein kleines "load-frame" kommt welches das eigentliche frame vorlädt? wenn ja wäre ich für eine lösung dankbar.
(ähnlich wie beim start von eclipse - nur brauch ich nicht unbedingt eine jprogressbar)

danke schon mal!

mfg
 
E

ElViZ

Gast
hm, also habs jetzt entweder nicht ganz verstanden oder dass ist doch nicht was ich meine... also jedenfalls hab ich das nicht hinbekommen das er meine gui so vorlädt, dass sie nicht erst kurz grau dargestellt wird. :/
 

AlArenal

Top Contributor
Zeig mal ein wenig Code. Vermutlich zeigst du deinen Frame bereits an, ehe du die Komponenten zur ContenPane hinzufügst und/oder du setzt erst nach der Anzeige die Model, o.ä.
 

Ceos

Mitglied
du erstellst am besten 2 Panels eins mit SplashScreen und eins wo du dein zeug reinpackst.
zuerst erzeugst du das splashscreen, bindest es an das frame, dann erzeugst du dein eigentliches panel, am ende der "erzeuger"-methode löschst du dann dein splash-panel und haust einfach das neue panel dafür rein (vergiss nicht das das validieren der größe des panels auch etwas zeit benötigt, also ersetze das splash-panel erst nachdem du die größe des fenster bestimmt hast)
 
E

ElViZ

Gast
jo hab das jetzt schon ziemlich weit verworfen, aber ich versuche das schnell nochmal so zumachen, wie ich es hatte
 
E

ElViZ

Gast
hm, kA, ich bekomm das jetzt irgendwie nicht mehr so hin wie ich es hatte :(
jedenfalls der code com splashwindow hatte ich eigentlich nahezu unverändert übernommen:

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

class SplashWindow extends JWindow
{
	
    public SplashWindow( JFrame f, int waitTime)
    {
        super(f);
        JLabel l = new JLabel(new ImageIcon(gui.class.getResource( "line.jpg" )));
        getContentPane().add(l, BorderLayout.CENTER);
        pack();
        Dimension screenSize =
          Toolkit.getDefaultToolkit().getScreenSize();
        Dimension labelSize = l.getPreferredSize();
        setLocation(screenSize.width/2 - (labelSize.width/2),
                    screenSize.height/2 - (labelSize.height/2));
        addMouseListener(new MouseAdapter()
            {
                public void mousePressed(MouseEvent e)
                {
                    setVisible(false);
                    dispose();
                }
            });
        final int pause = waitTime;
        final Runnable closerRunner = new Runnable()
            {
                public void run()
                {
                    setVisible(false);
                    dispose();
                   
                }
            };
        Runnable waitRunner = new Runnable()
            {
                public void run()
                {
                    try
                        {
                            Thread.sleep(pause);
                            SwingUtilities.invokeAndWait(closerRunner);
                        }
                    catch(Exception e)
                        {
                            e.printStackTrace();
                            // can catch InvocationTargetException
                            // can catch InterruptedException
                        }
                }
            };
        setVisible(true);
        
        Thread splashThread = new Thread(waitRunner, "SplashThread");
        splashThread.start();
    }
}

meine main-methode hatte dann sowas hier aufgerufen:
Code:
import javax.swing.*;
public class run1 implements Runnable
{
	public JFrame gui;
	public void aa(JFrame frame)  // bekommt das mainframe von meinem eigentlichen programm übergeben
	{
		gui = frame;
		start();
		
	}
	   protected void start()
	   {
		  new Thread( this ).start();
		  
	   }
		   
		public void run()
		{
			new SplashWindow(gui, 5000);
			gui.start_gui();
		}

		
}

bloß da ist jetzt das problem, dass er mein programm schon zusammen mit dem splashscreen startet - dies hatte ich aber schon gelöst bekommen, aber weiß jetzt auf die schnelle auch nicht mehr wie ich das ging :/
 

Ceos

Mitglied
mach dein splashscreen doch als Panel IN dein MainFrame rein(Border/Fill-Layout) dann erzeugst du die GUI und entfernst nach dem Laden der GUI das Panel mit dem Splash-Bild von deinem Frame (remove()-methode) und fügst(add()-methode) die fertige GUI in dein Frame ein (vorher die Größe brechnen und nach löschen des Splashscreen den Frame anpassen)
 
E

ElViZ

Gast
ja, aber das eigentlich problem was ich habe ist, dass ich nicht weiß wie woran ich erkennen kann wann die gui fertig geladen ist..
 

Ceos

Mitglied
indem du ganz einfach einen initGUI();-methode schreibst, in der du das Panel zusammenbaust, und am ende DIESER methode ganz einfach das remove und add des neuen Panel einfügst .... der aufruf des remove und des add kan nur dann geschehen, wenn die init-methode fast fertig ist ... denk nicht im multitask, mach einfach eine methode
Code:
public JPanel initsplash(JFrame parent);
in der du ein panel mit einem Bild bestückst, und es an das parent-frame anhängst, dann schreibst du eine 2te methode
Code:
public void initGUI(JFrame parent, JPanel Splash){
  JPanel P1=new JPanel();
  //GUI aufbauen
  parent.remove(Splash);
  //Resize nicht vergessen
  parent.add(P1);
}

das sollte so im prinzip funktionieren
 
E

ElViZ

Gast
jo ok ich glaub ich weiß wie du das meinst, ich versuch das mal.


danke schonmal :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
W ListView komplett anzeigen Java Basics - Anfänger-Themen 2
BeginnerJava "Weihnachtsbäume" anzeigen: Höhe als Parameter Java Basics - Anfänger-Themen 1
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
D Erste Schritte png in JFrame anzeigen? Java Basics - Anfänger-Themen 3
M PNG als Spieler im Fenster anzeigen Java Basics - Anfänger-Themen 4
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
M Auf MainJFrame Panels anzeigen lassen Java Basics - Anfänger-Themen 19
Rubberduck Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Die größte Zahl anzeigen Java Basics - Anfänger-Themen 19
V_Fynn03 Kontostand anzeigen lassen von einer anderen Klasse Java Basics - Anfänger-Themen 3
C Erste Schritte Bilder nach Export anzeigen Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
J Einen Buttonklick in Label anzeigen Java Basics - Anfänger-Themen 6
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
A ArrayList - size() nur nach bestimmtem index anzeigen lassen Java Basics - Anfänger-Themen 13
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
S ArrayListe in einer JComboBox anzeigen Java Basics - Anfänger-Themen 10
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
M Vererbung Ein JLabel einer Elternklasse anzeigen Java Basics - Anfänger-Themen 8
A Jdialog nur 1x anzeigen Java Basics - Anfänger-Themen 2
J Wie kann ich Images per Tastendruck anzeigen/einfügen? Java Basics - Anfänger-Themen 3
T Positionen anzeigen Java Basics - Anfänger-Themen 6
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
N Datei einlesen und grafisch anzeigen Java Basics - Anfänger-Themen 31
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
W Erste Schritte Zweidimensionales Array - Gerade Zahlen anzeigen lassen Java Basics - Anfänger-Themen 3
S eingegebene Matrix anzeigen Java Basics - Anfänger-Themen 4
T Kamerabild anzeigen Java Basics - Anfänger-Themen 1
J JPG in JFrame anzeigen lassen Java Basics - Anfänger-Themen 3
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
A Link in der Eingabeleiste nichr anzeigen Java Basics - Anfänger-Themen 1
C Methoden aus Klassen anzeigen lassen Java Basics - Anfänger-Themen 14
T Output in CMD anzeigen lassen? Java Basics - Anfänger-Themen 1
N Input/Output Wenn kein Input, dann Fehler anzeigen lassen im JFrame Java Basics - Anfänger-Themen 6
L Videos in Java anzeigen lassen Java Basics - Anfänger-Themen 10
M Wert aus String Feld anzeigen Java Basics - Anfänger-Themen 7
C JComboBox "Hilfstext" anzeigen Java Basics - Anfänger-Themen 11
C Html in einem JEditorPane anzeigen Java Basics - Anfänger-Themen 2
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
D Externe Eeite beim Mousover anzeigen Java Basics - Anfänger-Themen 0
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
L Über 100e Werte anzeigen Java GUI Java Basics - Anfänger-Themen 1
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
T JLabel anzeigen lassen... Java Basics - Anfänger-Themen 6
H Erste Schritte Uhrzeit anzeigen in Minuten Dezimal Java Basics - Anfänger-Themen 8
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
B Variable im Fenster anzeigen lassen? Java Basics - Anfänger-Themen 2
L bestimmten Frame anzeigen lassen? Java Basics - Anfänger-Themen 6
P JTabel größe ändern und button anzeigen Java Basics - Anfänger-Themen 5
D Dialoge anzeigen Java Basics - Anfänger-Themen 9
M Icon laden und anzeigen Java Basics - Anfänger-Themen 2
M Auslesen - Anzeigen - Schreiben Java Basics - Anfänger-Themen 13
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
X Methode in JTextArea anzeigen lassen Java Basics - Anfänger-Themen 18
J Ladebalken anzeigen während Bilder geladen werden Java Basics - Anfänger-Themen 2
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
M Website anzeigen Java Basics - Anfänger-Themen 4
P Erste Schritte Image anzeigen in ausführbarer jar mit der Toolkit class Java Basics - Anfänger-Themen 8
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
B JFrame - Namen anzeigen Java Basics - Anfänger-Themen 2
M Array von Personen anzeigen Java Basics - Anfänger-Themen 3
J Panel + Label anzeigen - Ich kriege es nicht hin Java Basics - Anfänger-Themen 3
G JList Objekte richtig anzeigen in JDK 6 Java Basics - Anfänger-Themen 5
G Bilder in Jar anzeigen lassen Java Basics - Anfänger-Themen 23
B jar Inhalt anzeigen Java Basics - Anfänger-Themen 5
M GUI JList - Objekte listen u. Feld anzeigen? Java Basics - Anfänger-Themen 16
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
N RegEx Wort anzeigen Java Basics - Anfänger-Themen 6
J JPG in einem Label einfügen und anzeigen lassen Java Basics - Anfänger-Themen 2
C JSlider und JRadioButton auf Label anzeigen? Java Basics - Anfänger-Themen 10
Y MenuBar in Application anzeigen Java Basics - Anfänger-Themen 7
B Alle Benutzer anzeigen Java Basics - Anfänger-Themen 17
B Applet anzeigen Java Basics - Anfänger-Themen 9
N Verschiedene JFrames in einem JFrame anzeigen Java Basics - Anfänger-Themen 7
A JPEG anzeigen Java Basics - Anfänger-Themen 3
L Webseiten anzeigen Java Basics - Anfänger-Themen 4
P OOP Statisitik anzeigen Java Basics - Anfänger-Themen 9
Zettelkasten Applet anzeigen ? Java Basics - Anfänger-Themen 5
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Zellen in einer JTable nicht anzeigen lassen Java Basics - Anfänger-Themen 3
I JFrame anzeigen Java Basics - Anfänger-Themen 9
M JTree ohne root anzeigen Java Basics - Anfänger-Themen 5
M Aus CSV-Datei lesen und anzeigen (bitte schnell um Antwort) Java Basics - Anfänger-Themen 6
G Inhalt Jar-Files anzeigen, incl. Methoden Java Basics - Anfänger-Themen 2
I Liste von Dateien anzeigen/JTree Java Basics - Anfänger-Themen 4
S Toggle Button Array zum anzeigen auf GUI Java Basics - Anfänger-Themen 17
StrikeTom Quelltext einer Internetseite auf JTextArea anzeigen Java Basics - Anfänger-Themen 4
F.A Development In Projekt vorhandenes 2. Fenster anzeigen Java Basics - Anfänger-Themen 19
B Textlänge anzeigen Java Basics - Anfänger-Themen 10
J Tabelle in Fenster anzeigen Java Basics - Anfänger-Themen 12
A Halb gefüllten Array anzeigen lassen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben