Хорошо, так как я не получил ответа, это то, что сработало для меня.Google не так просто расширяет существующие панели для добавления или изменения функциональности, поэтому я загрузил исходный код, скопировал StackPanel.java
, DecoratorPanel.java
и DecoratedStackPanel.java
в пакет в моем проекте gwt.
Главное изменение, которое мне действительно нужно было сделать, - это изменить поведение showStack(int index)
в классе StackPanel.java
с
public void showStack(int index) {
if ((index >= getWidgetCount()) || (index < 0) || (index == visibleStack)) {
return;
}
if (visibleStack >= 0) {
setStackVisible(visibleStack, false);
}
visibleStack = index;
setStackVisible(visibleStack, true); }
на что-то вроде этого:
public void showStack(int index) {
if ((index >= getWidgetCount()) || index < 0) {
return;
}
visibleStack = index;
setStackVisible(visibleStack, !getWidget(visibleStack).isVisible());
}
Я уверен, что это можно немного почистить, но это помогло.Причина, по которой другие классы необходимо скопировать в тот же пакет, заключается в том, что StackPanel.java
ссылается на некоторые из их методов, которые имеют видимость только пакета.