Пограничный вопрос о предположении boxPopup в GWT
Я использую SuggestBox в GWT. Я также наследую стандартную тему от SuggestionBox.gwt.xml как
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
поэтому для стандартного css по умолчанию используется виджет Suggestbox, и он создает границы через изображение в виде hborder.png,vborder.png и т. д. Я хочу удалить это, но мой css не работает.
.gwt-SuggestBoxPopup{
border : 1px solid #000000;
}
так как я могу решить эту проблему. Пожалуйста, помогите мне. Спасибо рахул
2 ответа
Класс, используемый для всплывающего окна, является DefaultSuggestionDisplay для SuggestBox по умолчанию. Он использует DecoratedPopupPanel, как вы можете видеть в SuggestBox.java вокруг строки 392.
Чтобы избежать "тяжелой" границы, вы должны создать / переопределить файл OffertionDisplay, в котором используется не украшенная панель popupPanel, и передать его в конструктор корыта SuggestBox
public SuggestBox(SuggestOracle oracle, TextBoxBase box,SuggestionDisplay suggestDisplay);
Скажем, "границы" не достаточно, потому что DecoratedPopupPanel использует несколько ячеек для установки границ, как вы видели в CSS. Таким образом, вы, вероятно, можете обновить CSS напрямую, но это будет применяться ко всем проектам, поскольку SuggestBox, похоже, не обрабатывает пакет ресурсов напрямую.
Создайте класс 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());
}
}
}
Создать объект предложить Box
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();