Обработчик кнопки на GWT?

Суть: есть виджет (панель). На нём есть кнопка. При нажатии на кнопку я хочу убрать текущий виджет целиком и перейти к другому.
Сейчас у меня есть кнопка
Button editBtn = new Button("Edit user",new editHandler(this));

и отдельный класс для обработчика этой кнопки
private class editHandler implements ClickHandler {
        private Widget panel;
        editHandler(Widget panel) {
            this.panel = panel;
        }
        public void onClick(ClickEvent event) {
            isUserEditing = true;
            RootPanel.get().remove(panel);
            RootPanel.get().remove(panel);
            RootPanel.get().add(new UserForm(resTab.selectedUser));
        }
    }

Как вы можете увидеть - реализация очень топорная - конструктор обработчика принимает виджет, присваивает его к другому и только потом удаляет.

Как мне написать обработчик сразу возле создания кнопки, чтобы оно выглядело вроде
Button addUserBtn = new Button("Add user", new ClickHandler(this) {
            .......
        });

потому что у меня возникают проблемы с передачей текущего виджета в конструктор обработчика.
  • Вопрос задан
  • 2929 просмотров
Решения вопроса 1
@sergei-grigorev

Вы не сможете передать вот так вот кнопку внутрь обработчика
new Button("Add user", new ClickHandler(this) {
Просто потому, что сперва будет создан ClickHandler (т.к. это вычисляемое значение) и только потом его экземпляр передан в конструктор Button. К моменту создания ClickHandler у вас конструктор кнопки еще не вызван и ссылки на него нет

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы