0

GXT 2.1.1 を使用すると、多数の FormPanel インスタンスがあり、すべてデフォルトの FormLayout レイアウトになっています。各フォームには多数の TextField インスタンスが含まれ、ホスト フォームは各テキスト フィールドにラベルを自動的に配置します。問題は、場合によっては、ラベル テキストが非常に小さく、ラベルとそれぞれのテキスト フィールドの間にかなり大きなスペースが配置されることです。また、ラベル テキストが大きすぎて、内容が折り返されてしまうこともあります。私がやりたいのは、すべてのラベルをそのフォームの最も広いラベルの幅に自動サイズ調整することです。

FormLayout にはsetLabelWidth (int ピクセル) 関数がありますが、その引数はピクセル単位である必要があります。TextField.getFieldLabel() を使用してラベル テキストを取得することを考えていましたが、ピクセルに変換する方法がわかりません。

お時間をいただきありがとうございます!

4

2 に答える 2

0

フォーム パネルのテキスト フィールド ラベルのサイズを自動調整する機能はありませんが、次のように最大サイズを設定できます。

 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);
于 2013-03-08T08:29:42.403 に答える
0

これが本当に質問に対する答えであるかどうかはわかりませんが、将来誰かに役立つことを願っています. 私が探していたラベルのサイズ変更に関して、GWT の FlexTable の動作が本当に気に入りました。ただし、GXT は GWT の Widget インスタンスを WidgetComponent として扱います。これは、FormPanel に配置されたときに、ネストされた Field インスタンスを走査しません。したがって、私の最終的な解決策は、GXT の FormPanel を拡張し、その getFields() および getChildFields() 関数を上書きすることでした。後者のロジックは、Container インスタンスに加えて 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);
    }
  }

このロジックを補完するために、Field インスタンスを設定および取得できるように FlexTable を拡張する必要もありました。

于 2013-03-12T19:47:43.477 に答える