Одна из проблем, с которыми вы сталкиваетесь, заключается в том, что Tree и TreeItem в GWT состоят из произвольных элементов div, а не ul и li, как в исходном html.(Если вы сомневаетесь, вы можете проверить DOM витрины GWT, чтобы увидеть, как создаются базовые виджеты).
Что это означает, что ваши селекторы, такие как "#avmenu li a: hover"больше не будет работать.
Если ваше навигационное меню статично, вам лучше всего использовать GWT ui-binders , которые в основном являются системой шаблонов gwts.Если вы используете HTMLPanel в качестве корневого виджета, вы можете эффективно использовать весь свой первоначальный дословный HTML-код и не беспокоиться о попытке объединить все элементы DOM в соответствующие виджеты.
Базовый виджет будет выглядеть примерно так:
NavigationWidget.java открытый финальный класс YourWidget расширяет Composite {
YourWidget() {
initWidget(binder.createAndBindUi(this));
}
private static final Binder binder = GWT.create(Binder.class);
interface Binder extends UiBinder<Widget, YourWidget> {}
}
NavigationWidget.ui.xml
<ui:UiBinder
xmlns:gwt="urn:import:com.google.gwt.user.client.ui"
xmlns:ui="urn:ui:com.google.gwt.uibinder">
<gwt:HTMLPanel>
<div id="avmenu">
<h2 class="hide">Menu:</h2>
<ul>
<li><a href="#">Welcome!</a></li>
</div>
</gwt:HTMLPanel>
</ui:UiBinder>
Кроме того, в этом примере HTMLPanel добавляет собственный DIV к DOM, что делает второй div немного избыточным.К сожалению, виджеты в gwt не имеют простого способа установить атрибут ID из шаблонов, поэтому вы застряли со вторым div, если не хотите переключить селектор #avmenu на .avmenu