Frage zum Thema SwingUtilities.invokeLater

Dit_

Bekanntes Mitglied
Hallo!

Neue Fenster sollte man ja in extra thread laufen lassen.

Ich habe jetzt follgendes Problem. Wenn ich in der Main-methode diese 3 Zeilen Code als "new Runnable" aufrufe so wird beim Start mein Startpanel nicht sichtbar... Starte ich main-Methode ohne involkeLater so ist Startpanel sichtbar... woran könnte das liegen?

Java:
public class Start {


	public static void main(String[] args) {
//		Gui gui = new Gui();
//		Controller controller = new Controller(gui);
//		controller.startProgram();
		
		//oder so:
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				Gui gui = new Gui();
				Controller controller = new Controller(gui);
				controller.startProgram();
			}
		});
		
	}
}

die Methode startProgramm.

Java:
public void startProgram() {

		StartPanel stpanel = new StartPanel();
		try {
			gui.setController(this);
			stpanel.setProgress(0, Translator.getString("loadProfile.StatusText"));
			loadProfile();
			initLog();
			stpanel.setProgress(25, Translator.getString("createWindow.StatusText"));
			gui.createWindow();
			stpanel.setProgress(50, Translator.getString("loadUpdater.StatusText"));
			initUpdater();
			stpanel.setProgress(75, Translator.getString("startUpdater.StatusText"));
			restartUpdater();

		} catch (AException e) {
		        ...
		}
	}


StartPanel
Java:
public class StartPanel extends JDialog {

	/**
	 * Konstruktor.
	 */
	public StartPanel() {
		createWindow();
	}
	
	
	private void createWindow() {
		setUndecorated(true);
		createPanel();
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}
...
}

Danke schon mal.
 

Dit_

Bekanntes Mitglied
Moin,

schau mal hier:
SwingUtilities

Gruß
Klaus

Hat mir leider nicht weiter geholfen. Ich weiss schon dass man Fenster in ETD auslagern sollte.
Hier habe ich aber ein Problem in der Methode startProgram()

muss ich StartPanel auch mit invokeLater aufrufen?
Kann bitte jemand sagen wie ich das genau mache? Soll ich vielleicht in main Methode normal ohne invokeLater starten, dafür aber in startProgram(), die Methode, die das Fenster sichtbar macht mit.
Java:
public void startProgram() {
 
        StartPanel stpanel = new StartPanel();
        try {
            gui.setController(this);
            stpanel.setProgress(0, Translator.getString("loadProfile.StatusText"));
            loadProfile();
            initLog();
            stpanel.setProgress(25, Translator.getString("createWindow.StatusText"));
            SwingUtilities.invokeLater(new Runnable() {
				
				@Override
				public void run() {
					  gui.createWindow();
				}
			});
            stpanel.setProgress(50, Translator.getString("loadUpdater.StatusText"));
            initUpdater();
            stpanel.setProgress(75, Translator.getString("startUpdater.StatusText"));
            restartUpdater();
 
        } catch (AException e) {
                ...
        }
    }


und was ist mit StartPanel?

Danke schon mal
 
S

SlaterB

Gast
wenn
> gui.createWindow();
den setVisible(true);-Befehl enthält, dann ist das zuletzt gepostete Konstrukt schon gut,
der Rest kann normal aus der main aufgerufen werden,

in den Zeilen nach dem invokeLater()-Aufruf solltest du dich aber nicht darauf verlassen, dass die GUI schon zu sehen ist,
das geschieht ja nebenläufig zu ungewisser Zeit,

wieso sind eigentlich schon vorher setProgress()-Aufrufe, bevor die GUI zu sehen ist?


--------

wenn du im ersten Post alles in invokeLater() ausführtst, dann wird die GUI erst ganz am Ende von startProgram() erstmals gezeigt, so ist es also schlecht,
für längerfristige Aktionen müsstest du aus invokeLater() heraus einen neuen Thread starten
 

Dit_

Bekanntes Mitglied
wenn
> gui.createWindow();
den setVisible(true);-Befehl enthält, dann ist das zuletzt gepostete Konstrukt schon gut,
der Rest kann normal aus der main aufgerufen werden,

in den Zeilen nach dem invokeLater()-Aufruf solltest du dich aber nicht darauf verlassen, dass die GUI schon zu sehen ist,
das geschieht ja nebenläufig zu ungewisser Zeit,

ok jetzt ist klar. Es geht also nur um setVisible(true).

wieso sind eigentlich schon vorher setProgress()-Aufrufe, bevor die GUI zu sehen ist?

Ja ist Fehler von mir, falsch gepostet. GUI wird erst sichtbar wenn alles geladen ist und StartPanel verschwindet.


Ok, danke erstmal. Jetzt gehts endlich :) sonst hängte alles...

Nächste Frage.
In meiner Gui kann ich durch Klicken auf ein JButton oder über Menu ein extra Fenster mit Einstellungen des Programms öffnen.

Beide, JButton sowie JMenuItem rufen die Methode showProgramSettingsWindow()
Diese Methode befindet sich (so wie startProgram()) in der Klasse Controller.

Java:
	...
	
	public Controller(Gui gui) {
		this.gui = gui;
	}
	
	
	@Override
	public void showProgramSettingsWindow() {
		SwingUtilities.invokeLater(new Runnable() {
			
			@Override
			public void run() {
				new SettingsWindow(gui, Controller.this, SettingsWindow.MAIN_TAB);
			}
		});
		
	}
	...

Muss ich denn so wie es da steht mit invokeLater das SettingsFenster öffnen?

Gruß
 

eRaaaa

Top Contributor
Btw es gitbt auch die statische Methode [c]isEventDispatchThread()[/c] in SwingUtilities...mit dieser kannst du jederzeit erfahren ob der Code gerade vom EDT ausgeführt wird oder nicht!

Beide, JButton sowie JMenuItem rufen die Methode showProgramSettingsWindow()

kann man meiner Meinung nach jetzt so nicht sagen, kommt halt darauf an von wo aus die das immer aufrufst.
Hört sich aber so an, als wenn das immer aus einem Listener heraus aufgerufen wird(dieser Code wird eh immer vom EDT ausgeführt) daher wäre es dann wahrscheinlich nicht notwendig!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben