2012-11-30 57 views
1

我希望setHorizo​​ntalAlignment將我的兩個按鈕從左側移動到中間。任何想法爲什麼這不起作用?所有相關的代碼都在下面,非常簡單。爲什麼這個GWT DialogBox不居中兩個按鈕?

enter image description here

public void onClick(ClickEvent event) { 
      final DialogBox deleteDialog = new DialogBox(); 
      deleteDialog.setModal(false); 
      deleteDialog.setGlassEnabled(true); 

      HorizontalPanel buttonPane = new HorizontalPanel(); 
      buttonPane.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); 

      buttonPane.add(deleteDialogOKButton); 
      buttonPane.add(deleteDialogCancelButton); 

      deleteDialog.center();  

      deleteDialog.add(buttonPane);  
      deleteDialog.setText("Delete this Station?"); 

      deleteDialogOKButton.addClickHandler(new ClickHandler() { 
       public void onClick(ClickEvent event) { 
        stationService.deleteStation(station, new DeleteStationCallback()); 
        deleteDialog.hide(); 
       }}); 

      deleteDialogCancelButton.addClickHandler(new ClickHandler() { 
       public void onClick(ClickEvent event) { 
        deleteDialog.hide(); 
       }}); 

      deleteDialog.show(); 
      //stationService.deleteStation(station, new DeleteStationCallback()); 
     } 
    } 
+0

我認爲Horizo​​ntalPanel長度爲這裏等於100%設置單元格對齊方式。嘗試爲內部小部件設置對齊 – anstarovoyt

+0

您可以嘗試在CSS中將'buttonPane'設置爲'margin:auto;'以將buttonPane居中在DialogBox中。 – NickD

+0

在上面的代碼中,有'HasHorizo​​ntalAlignment.ALIGN_RIGHT'。你有沒有嘗試'HasHorizo​​ntalAlignment.ALIGN_CENTER' –

回答

2

當你不給任何寬度你的水平面板,它佔用了其內容的寬度之和。所以HasHorizontalAlignment.ALIGN_RIGHT,HasHorizontalAlignment.ALIGN_LEFT或任何其他路線並不重要,因爲它安裝在給定的區域。嘗試建立以下,

buttonPane.setwidth(100%); 
buttonPane.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTRE); 

如果這也不起作用,那麼你必須使用API​​

setCellHorizontalAlignment(Widget w,HasHorizontalAlignment.HorizontalAlignmentConstant align); 
+0

我試着將它設置爲setWidth(「100%」);沒有運氣。當我用第二種方法將中心對齊時,它確實有點居中,但第二個按鈕右側似乎仍有空間過剩。你提到的最後一種方法對這個問題沒有幫助。 任何想法爲什麼前兩個似乎將多餘的空間放在buttonPane的右側? – Davek804

+0

它似乎被稱爲相關。如果我刪除了設置的標題行,則該對話框只有足夠大的尺寸才能支持正確居中的兩個按鈕。 – Davek804

+0

根據我所提到的應該工作..我不知道什麼標題行是用這個 –