2016-08-31 1 views
0

J'essaie d'afficher un GWT DialogBox lorsque je capture une exception par un gestionnaire d'événements . La DialogBox ne s'affiche pas. Je l'ai confirmé l'événement gestionnaire est appelé parce queAffichage de GWT DialogBox à partir d'un gestionnaire d'événements

Window.alert("some msg") 

ne affiche. La DialogBox s'affiche lorsque je le crée en dehors du gestionnaire d'événements dans un objet View. Je suppose que la DialogBox n'a pas accès à l'affichage actuel. Y a-t-il un moyen de l'afficher?

Voici un extrait de code:

eventBus.addHandler(ProcessingExceptionEvent.TYPE, new ProcessingExceptionEventHandler() { 
    public void onProcessingException(ProcessingExceptionEvent event) { 
     // Window.alert("some msg"); 
     final WiseAlertPanel errorAlert = new WiseAlertPanel("ERROR MESSAGE: " + event.getMessage()); 
     errorAlert.autoPositionAndShow(); 
    } 
}); 

public class WiseAlertPanel extends DialogBox { 
    VerticalPanel vpPopupl = new VerticalPanel(); 

    public WiseAlertPanel(String text) { 
     setGlassEnabled(true); 
     Button button = new Button("Close"); 
     button.addClickHandler(new ClickHandler() { 
      public void onClick(ClickEvent event) { 
       WiseAlertPanel.this.hide(); 
      } 
     }); 

     HorizontalPanel hPanel = new HorizontalPanel(); 
     hPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); 
     hPanel.add(button); 

     TextArea label = new TextArea(); 
     label.setText(text); 
     label.setReadOnly(true); 
     label.setVisibleLines(5); 

     vpPopupl.add(label); 
     vpPopupl.add(hPanel); 
     setWidget(vpPopupl); 
    } 

    public void autoPositionAndShow() { 
     setPopupPositionAndShow(new PopupPanel.PositionCallback() { 
      public void setPosition(int offsetWidth, int offsetHeight) { 
       int left = (Window.getClientWidth() - offsetWidth)/3; 
       int top = (Window.getClientHeight() - offsetHeight)/3; 
       WiseAlertPanel.this.setPopupPosition(left, top); 
      } 
     }); 
    } 
+0

Essayez de supprimer 'WiseAlertPanel.this' de votre code ou appelez directement 'setPopupPositionAndShow' au lieu de' autoPositionAndShow'. –

Répondre

0

On dirait que vous venez de créer le DialogBox "WiseAlertPanel errorAlert" en mémoire.

Essayez d'appeler la méthode show dans "autoPositionAndShow" comme ci-dessous

public void autoPositionAndShow() { 
    setPopupPositionAndShow(new PopupPanel.PositionCallback() { 
     public void setPosition(int offsetWidth, int offsetHeight) { 
      int left = (Window.getClientWidth() - offsetWidth)/3; 
      int top = (Window.getClientHeight() - offsetHeight)/3; 
      WiseAlertPanel.this.setPopupPosition(left, top); 
      show(); 
     } 
    }); 
} 

Référence GWT DialogBox show()