2016-08-31 4 views
0

イベントハンドラで例外をキャプチャするときにGWT DialogBoxを表示しようとしています。 DialogBoxは表示されません。eventHandler内からGWT DialogBoxを表示

Window.alert("some msg") 

が表示されるので、 というハンドラが呼び出されたことを確認しました。 DialogBoxは、Viewオブジェクト内のイベントハンドラの外側に作成すると表示されます。私はDialogBoxが現在のディスプレイへのアクセスを持っていないと仮定します。これを表示させる方法はありますか?ここで

は、コードスニペットです:あなただけのメモリにダイアログボックス「WiseAlertPanel errorAlert」を作成しているよう

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

てみリファレンス

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(); } }); } 

以下のように "autoPositionAndShow" でshowメソッドを呼び出すか、代わりに '' autoPositionAndShow'のsetPopupPositionAndShow'直接呼び出してみてください。 –

答えて

関連する問題