1

GWTでSuggestBoxを使用しています。SuggestionBox.gwt.xmlからStandardテーマも継承しています。

  <inherits name='com.google.gwt.user.theme.standard.Standard'/>

したがって、これはウィジェットのサジェストボックスにデフォルトの標準cssを使用しており、hborder.png、vborder.pngなどの画像を介して境界線を作成しています。これを削除したいのですが、cssが機能していません。

.gwt-SuggestBoxPopup{
  border  :    1px solid #000000;
}

どうすればこの問題を解決できますか。助けてください。ありがとうRahul

4

2 に答える 2

1

ポップアップに使用されるクラスは、デフォルトのSuggestBoxのDefaultSuggestionDisplayです。392行目あたりのSuggestBox.javaに示されているように、DecoratedPopupPanelを使用します。

「重い」境界線を回避するには、装飾されていないpopupPanelを使用するSuggestionDisplayを作成/オーバーライドし、SuggestBoxトラフコンストラクターに渡す必要があります。

   public SuggestBox(SuggestOracle oracle, TextBoxBase box,SuggestionDisplay suggestDisplay); 

CSSに見られるように、DecoratedPopupPanelは複数のセルを使用して境界線を設定するため、「境界線」では不十分です。したがって、CSSを直接​​更新することはできますが、SuggestBoxはリソースバンドルを直接処理していないようであるため、すべてのプロジェクトに適用されます。

于 2012-06-28T08:06:59.847 に答える
0

customSuggestionDisplay クラスを作成する

public static class CustomSuggestionDisplay extends SuggestBox.DefaultSuggestionDisplay {
    private PopupPanel suggestionPopupRef;

    public CustomSuggestionDisplay() {
        suggestionPopupRef = getPopupPanel();
    }

    public void removeBorder() {
        ((Element)suggestionPopupRef.getElement().getChild(0)).getStyle().setBackgroundColor("white");
        NodeList<com.google.gwt.dom.client.Element> tdList = suggestionPopupRef.getElement().getElementsByTagName("td");
        for (int tdIndex = 0; tdIndex < tdList.getLength(); ++tdIndex) {
            Element tdElement = (Element) tdList.getItem(tdIndex);
            if (tdElement.getClassName().startsWith("suggestPopup"))
                tdElement.removeClassName(tdElement.getClassName());
        }
    }
}

SuggestBox オブジェクトを作成する

SuggestOracle oracle = new RestSuggestOracle();
CustomSuggestionDisplay suggestionDisplay = new CustomSuggestionDisplay();
TextBox textfield = new TextBox();
SuggestBox m_field = new SuggestBox(oracle, textfield, suggestionDisplay);

提案が表示されているときに removeBorder を呼び出す

if (m_field.isSuggestionListShowing())
    suggestionDisplay.removeBorder();
于 2015-08-18T08:04:50.127 に答える