GUI vollständig anzeigen nachdem sie geladen wurde

Status
Nicht offen für weitere Antworten.

Roman

Mitglied
Hallo zusammen

Ich habe folgendes Problem:
Mit Eclipse und dem Visual Editor habe ich zwei GUIs erstellt, die erste ist sozusagen die Einstellungsgui, bei der zweiten wird gerechnet und der Status soll angezeigt werden.

Jetzt die erste GUI ist nichts spezielles, läuft sauber.
Bei der zweiten habe ich das Problem, dass er den Frame erstellt, dann rechnet und dann aber erst vollständig anzeigt...
Also die GUI wird erstellt, aber nicht vollständig angezeigt (diverse Labels und ein Button wird erstellt). Dann rechnet er und am Schluss wird sie endlich angezeigt.
Ich habe vor dem Rechenvorgang auch schon einen sleep eingefügt (1000 ms sollten doch reichen...) oder auch den Rechenvorgang durch einen sleep ersetzt. Leider klappt das nicht.

Der Code sieht momentan so aus beim Aufruf:
Code:
....
initialize();

		try
		{
			Thread.sleep(1000);
		}
		catch( Exception e )
		{
			
		}
		// Starte Backup!
		//FileHandler.backupNow(fromDir, toDir);
		
		// Ändert die Texte entsprechend
		statusRunning.setText("Abgeschlossen!");
		cancelButton.setText("Beenden");
		textRunning.setText("Backupvorgang abgeschlossen!");

....

private void initialize() {
		this.setResizable(false);
		this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
		this.setSize(300, 109);
		this.setContentPane(getJContentPane());
		this.setTitle("Backup");
		this.setVisible(true);
	}

Weiss jemand, wo das Problem liegen könnte bzw. wie ich dieses beheben kann? Ich kann gerne noch mehr Code posten 😉

Vielen Dank!
Roman
 
this.setVidible(true) erst am schluss des hineineschreiben(also nicht im initialisize. oder du schreibst es gar nicht, und wenn du eine instanz davon erstellst, machst du diese sichtbar.

also:
Code:
DeinZweitesGUI zweites = new DeinZweitesGUI();
zweites.setVisible(true);

gruss
 
Ich möchte aber, dass das Fenster während des Rechnens ebenfalls angezeigt wird, da die Operationen doch recht lange dauern können (es handelt sich um Dateioperationen, darum sinds je nach dem mehrere Minuten bis sogar zu Stunden...).
Ausserdem möchte ich den Inhalt währenddessen wenn möglich ebenfalls ändern (so kann ich aktuelle Infos rausschreiben).
 
Also ich habs jetzt mit Threads versucht...
Leider funktioniert es immer noch nicht...

Das setVisible wird immer noch vor den Operationen gesetzt, aber korrekt angezeigt wirds imemr noch nach den Operationen :roll:
 
das setvisible heisst ja auch nur dass es sichbar ist 😉
wenn du noch nicht alles hinzugefügt hast muss er dass dann machen nachdem du es sichtar gemacht hast, desshalb die unkorrekte anzeige.
wenn du deinen algo in einem Thread machst arbeitet dein GUI weiter und das Problem sollte sich beheben. trotzdem würd ich es erst am schluss sichtbar machen...
 
Was setVisible macht, ist mir schon klar... 😉
Hinzugefügt ist alles, nur werden nachher noch drei Texte von bereits erstellten Buttons und Labels geändert. Aber auch wenn diese Texte nicht mehr geändert werden, erscheint die Anzeige erst nach dem Algo richtig.

Wie gesagt, es funktioniert weder mit einem separaten Algo-Thread noch "einfach so" durchs Ablaufen.

Ich würde euch gerne noch einen Screenshot zeigen, nur leider kann ich von hier nicht auf meinen Server zugreifen...

Hier nochmals der Code, um den Thread zu erstellen.
this.setTextFinish() setzt eben die fertigen Texte, habe ich hier aber auskommentiert, da es keinen Einfluss hat.

Code:
		initialize();
		
		// Starte Backup!
		if( Backup.operation )
		{
			t1 = new Thread( new BackupNowThread() );
		       //FileHandler.backupNow(Backup.dir1, Backup.dir2);
		}
		else
		{
			//FileHandler.syncNow(Backup.dir1, Backup.dir2);
		}
		// Thread starten
		t1.start();
		// warten
		try
		{
			t1.join();
		}
		catch(Exception e)
		{
			System.err.println(e);
		}
		
		// und Texte ändern
		//this.setTextsFinish();

SwingWorker schau ich mir gleich mal an 😉


Edit:

SwingWorker ist genial!!
Jetzt funktioniert das endlich wie ich es wollte 8) 😀
Vielen Dank euch beiden!!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben