2013-03-08 34 views
0

2.1.1 我有許多FormPanel實例,所有實例都使用默認的FormLayout佈局。每個表單都包含多個TextField實例,主機窗體會自動爲每個文本字段放置一個標籤。麻煩的是,在某些情況下,標籤文本非常小,在標籤和相應的文本字段之間放置了一個相當大的空間。在其他情況下,標籤文本太大,迫使其內容包裝。 我想要做的是以某種方式自動將所有標籤自動調整爲該窗體上最寬標籤的寬度。在GXT的FormPanel中自動調整TextField標籤使用GXT的

FormLayout確實有一個setLabelWidth(int pixel)函數,但其​​參數必須以像素爲單位。我想使用TextField.getFieldLabel()來檢索標籤文本,但我不知道如何將其轉換爲像素。

謝謝你的時間!

回答

0

沒有功能來自動調整文本框的標籤形式panel.but你可以設置最大尺寸如下

FormPanel formPanel = new FormPanel(); 
formPanel.setBodyBorder(false); 
formPanel.setButtonAlign(HorizontalAlignment.CENTER); 

    FormLayout layout = new FormLayout(); 
    layout.setLabelAlign(LabelAlign.LEFT); 
    layout.setLabelWidth(200);//Here you can set maximum size of your label 
    formPanel.setLayout(layout); 
+0

謝謝你的迴應,Divyesh。不過,我不想盲目設置標籤寬度,因爲它們中的一些太短而無法開始。我需要的是一種從TextField.getFieldLabel()中確定像素數量的方法 – user1056027 2013-03-08 10:17:14

0

不知道這是否真的是問題的答案,但我希望它也許可以幫助某個人。 我真的很喜歡GWT的FlexTable相對於我正在尋找的標籤尺寸的表現方式。然而,GXT將GWT的Widget實例視爲一個WidgetComponent,當放置在FormPanel中時,而不是被嵌套的Field實例遍歷。所以我最終的解決辦法是延長GXT的FormPanel中,並覆蓋其getFields()和getChildFields()函數,後者的邏輯除了容器實例尋找WidgetComponent實例:

for (Component comp : c.getItems()) { 
    if (comp instanceof Field) { 
     fields.add((Field<?>) comp); 
    } 
    else if (comp instanceof WidgetComponent) { 
     if (((WidgetComponent) comp).getWidget() instanceof FlexTable) { 

      // logic to retrieve Field instances from FlexTable 

     } 
    } 
    else if (comp instanceof Container) { 
     getChildFields((Container<Component>) comp, fields); 
    } 
    } 

來補充這個邏輯,我也有擴展FlexTable以允許設置和檢索Field實例。