# Komponenten in Event Dispatch Thread erzeugen?



## EDT (8. Feb 2009)

Hallo,


Lösung angeblich: 





> Like the exception says, in order to use Substance 5.0+ you will need to make sure that all your components are created on the Event Dispatch Thread.



Hat mir jemand einen Link mit Beispiel-Code für mein Problem bitte? Ich verstehe das nicht ganz, seit wann werden Components in einem extra Thread erzeugt?



> org.jvnet.lafwidget.UiThreadingViolationException: Component state change must be done on Event Dispatch Thread
> at org.jvnet.lafwidget.LafWidgetUtilities.testComponentStateChangeThreadingViolation(LafWidgetUtilities.java:589)
> at org.jvnet.lafwidget.animation.FadeStateListener$1.stateChanged(FadeStateListener.java:232)
> at javax.swing.DefaultButtonModel.fireStateChanged(Unknown Source)
> ...


----------



## André Uhres (8. Feb 2009)

1234567890


----------



## Franz456789 (9. Feb 2009)

Hallo!

Ich habe ein Problem mit dem invokeLater!

Ich habe ein JFrame "InitGameGUI", wenn der Button geklickt wird soll diese visble=false gesetzt werden und ein anderes JFrame "WaitingFrame" dargestellt werden. Leider funktioniert das nicht...

Das Fenster wird nicht richtig aufgebaut.

Was mache ich falsch?!



```
m_hostGame.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				
				if (m_nameField.getText().equals("")) {
					System.out.println("No name is set!");
					m_nameField.setText("Unknown");
				}
				
				Player playerThis = new Player(m_nameField.getText(), true, m_stoneSelected, m_picSelected);
				
				//setVisible(false);
				//dispose();
				
				Runnable wait = new Runnable() {
					public void run() {
						WaitingFrame wf = new WaitingFrame();
					}
				};
				
				SwingUtilities.invokeLater(wait);
				
				Server server = new Server(Integer.parseInt(m_portField.getText()));
				
				
				//wf.setVisible(false);
				//wf.dispose();
				
				Board board = new Board(playerThis, server);
				server.getGDI().setBoard(board);
				
				server.send(new GameData(EnumMsgType.PLAYER, playerThis.toString()));
			}
			
		});
```


----------



## EDT (9. Feb 2009)

reicht das Swing Thread Handling in Java 6 aus oder sollte man zu http://foxtrot.sourceforge.net/docs/async.php

greifen?


----------



## SlaterB (9. Feb 2009)

ansonsten ist an obigen Quellcode wenig zu sehen,
WaitingFrame könnte eine ArrayList sein, der setVisible(true)-Aufruf fehlen oder beliebig andere Fehler

ein ActionListener wird übrigens standardmäßig bereits vom Event Dispatch Thread ausgeführt, 
SwingUtilities.invokeLater() ist dort nicht unbedingt erforderlich


----------

