1

我在 GWT 中使用 SuggestBox。我还从 SuggestionBox.gwt.xml 继承标准主题为

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

所以这是对小部件 Suggestbox 使用默认标准 css,它通过图像制作边框,如 hborder.png、vborder.png 等。我想删除它,但我的 css 无法正常工作。

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

那么我该如何解决这个问题。请帮助我。谢谢拉胡尔

4

2 回答 2

1

用于弹出窗口的类是默认 SuggestBox 的 DefaultSuggestionDisplay。它使用 DecoratedPopupPanel,如您在 SuggestBox.java 中第 392 行附近看到的那样。

为避免“重”边框,您必须创建/覆盖使用未装饰的 popupPanel 的 SuggestionDisplay 并将其传递给您的 SuggestBox 槽构造函数

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

说,“边框”是不够的,因为 DecoratedPopupPanel 使用多个单元格来设置边框,正如您在 CSS 中看到的那样。因此,您可能可以直接更新 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());
        }
    }
}

创建一个建议框对象

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 回答