# Erste Gehversuche mit GWT



## MayYes (8. Nov 2011)

Hallo allerseits,

ich spiele gerade ein wenig mit dem GWT rum und komm bei einem Fehler (besser Exception) nicht mehr weiter.

Ich habe eine Tabelle erzeugt (Grid(5,5)) und der Tabelle einen ClickListener hinzugefügt. Dieser soll bei der geklickten Zelle dann ein "x" setzen. Klappt alles wunderbar soweit. Nun öffne ich gleichzeitig eine DialogBox mit einem Button. Die Box hat noch keine Funktion. Wenn ich auf den Button "Test" klicke, dann schließt sich die DialogBox wieder. Das klappt beim ersten Mal auch ohne Probleme. Wenn ich dann zum 2. Mal eine Zelle anklicke, öffnet sich die DialogBox und er zeigt mir in deiner Konsole folgende Meldung:
"Uncaught Exception escaped"

Hab dann ein wenig nachgeschaut und herausgefunden, dass folgende Exception aufgetreten ist:

Caused by: java.lang.IllegalStateException: SimplePanel can only contain one child widget
    at com.google.gwt.user.client.ui.SimplePanel.add(SimplePanel.java:67)

Jetzt komm ich nicht weiter. Hab keine Ahnung was das bedeutet und wie ich das behebe.
Hier mal mein Code:

```
package test.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class TestObjekt implements EntryPoint {

	private Grid a = new Grid(5,5);
	private Button b = new Button("Test");
	private DialogBox c = new DialogBox();
	private VerticalPanel d = new VerticalPanel();
	
	public void onModuleLoad() {
		RootPanel.get("content").add(createTable());
	
	}

	private Widget createTable() {
		a.setBorderWidth(2);
		a.setCellSpacing(1);
		
	    for(int i = 0; i <= 4; i++)
	    	a.getCellFormatter().setWidth(0, i, "128px");
	    
	    a.addClickHandler(new ClickHandler(){
			public void onClick(ClickEvent event) {
				createDialogBox(a.getCellForEvent(event).getRowIndex(), a.getCellForEvent(event).getCellIndex());				
			}	
	    });
		return a;
	}
	
	private void createDialogBox(int row, int column){
		a.setText(row, column, "x");
		
		c.setText("Test DiaBox");
		c.setPixelSize(400, 100);
		c.center();
		
		d.setPixelSize(400, 100);
		d.add(b);
		
		b.addClickHandler(new ClickHandler() {
			
			public void onClick(ClickEvent event) {
				c.hide();			
			}
		});
		
		c.add(d);
		c.show();		
	}
}
```

Für jede Hilfe bin ich dankbar.

Liebe Grüße
MayYes


----------



## Sym (8. Nov 2011)

Ich kenne mich mit GWT nicht aus, aber Du hast einen ClickHandler, der bei jedem Click ein neues Child hinzufügt und die Exception sagt mir, dass nur ein Child enthalten sein darf.


----------



## MayYes (8. Nov 2011)

ah ok, gibt es dann eine Möglichkeit dieses Child zu entfernen wenn ich den Button klicke?


----------



## Sym (8. Nov 2011)

Initialisiere doch Deine Box schon vorher (inkl. c.add(...)).


----------



## MayYes (8. Nov 2011)

Thats it 
Danke für deine Hilfe.

Liebe Grüße
MayYes


----------

