Bonjour,

Je suis en train de travailler avec GWT et je souhaite créer ma propre DialogBox qui possèderait un bouton permettant de la fermer.

Pour cela, j'ai une classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
 
public class CustomDialogBox extends DialogBox implements ClickHandler {
 
	Button close;
	HTML caption = new HTML();
	HorizontalPanel captionPanel = new HorizontalPanel();
 
	public CustomDialogBox() {
		close = new Button("x");
		close.addClickHandler(this);
 
		captionPanel.add(caption);
    	captionPanel.add(close);
    	captionPanel.setStyleName("caption");
 
    	Element td = getCellElement(0, 1);  // Get the cell element that holds the caption
    	td.setInnerHTML(""); // Remove the old caption
    	td.appendChild(captionPanel.getElement());
	}
 
	@Override
	public void onClick(ClickEvent event) {
		CustomDialogBox.this.hide();
		Window.alert("click");
	}
}
Le problème est que lorsque je clique sur le bouton, aucune des actions du onClick ne sont effectuées. Si je met le bouton dans le conteneur lui même :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public CustomDialogBox() {
		close = new Button("x");
		close.addClickHandler(this);
 
		this.add(close);
	}
 
	@Override
	public void onClick(ClickEvent event) {
		CustomDialogBox.this.hide();
		Window.alert("click");
	}
Dans ce cas, l'alert passe bien mais le .hide() soit ne s'effectue pas soit ne fonctionne pas dans mon cas.

Je souhaiterais savoir si quelqu'un sur ce forum aurait une idée de solution.

Merci d'avance.