GWT Stackpanel обработчик для открытого события - PullRequest
1 голос
/ 07 октября 2011

есть ли способ получить событие, когда я переключаюсь между виджетами на панели стека? что-то вроде openhandler для стековой панели. Я должен знать индекс открытый виджет на панели стека.

Ответы [ 3 ]

1 голос
/ 19 марта 2012

Вы можете добавить обработчик щелчков на DecoratedStackPanel (и, возможно, StackPanel) и использовать getSelectedIndex (), как показано ниже:

myDecoratedStackPanel.addHandler(new ClickHandler()
{
    @Override
    public void onClick(ClickEvent clickEvent)
    {
        Window.alert("" + myDecoratedStackPanel.getSelectedIndex());
    }
}, ClickEvent.getType());
1 голос
/ 10 октября 2011

Использование StackLayoutPanel: http://google -web-toolkit.googlecode.com / svn / javadoc / 2.0 / com / google / gwt / пользователь / клиент / пользовательский интерфейс / StackLayoutPanel.html

Используйте addSelectionHandler() метод.Чтобы получить выбранный виджет, вы можете использовать getVisibleIndex() или getVisibleWidget().

myStackPanel.addSelectionHandler(new SelectionHandler<Integer>() {
    @Override
    public void onSelection(SelectionEvent<Integer> event) {

        int selectedWidgetIndex = stackPanel.getVisibleIndex());

        //Do stuff with the selectedWidgetIndex
    }
});

РЕДАКТИРОВАТЬ: Это использует StackLayoutPanel, OP использует StackPanel.Разница между ними заключается в том, что StackPanel предназначен для режима причуд, а панель StackLayout для режима стандартов.Я бы использовал StackLayoutPanel или любой виджет, связанный с Layout, так как их используют новые виджеты GWT, например новый DataGrid.

0 голосов
/ 23 марта 2012

Переопределив метод showStack, это очень просто. Попробуйте что-то вроде:

public class StackPanelX extends StackPanel implements IHasChangeHandler {

    String ctx_id=null;
    IChangeHandler chandler=null;

    public StackPanelX() {
        super();
    }

    public void showStack(int index) {
        int currentStack = this.getSelectedIndex(); 

        super.showStack(index);

        if (currentStack!=index)
            if (chandler!=null) 
                chandler.onChange(ctx_id, new Variant(index));

    }

    @Override
    public void setChangeHandler(String ctx_id, IChangeHandler handler) {
        this.ctx_id=ctx_id;
        this.chandler=handler;
    }

}
...