Изменить название заголовка вопроса - PullRequest
1 голос
/ 26 марта 2012

Привет! Я использую GWT, и у меня есть com.smartgwt.client.widgets.Button со следующим eventHandler:

        Button viewCommentsButton = new Button("View ");
        viewCommentsButton.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                if (!childrenVisible) {
                    addChildren();
                    getParent().setTitle("Close");
                } else {
                    removeChildren();
                    getParent().setTitle("View");
                }
            }

        });

Как видите, я пробовал метод getParent (). SetTitle (), но безрезультатно. If отлично работает, поэтому я думаю, что не могу получить ссылку на мой объект кнопки, но код компилируется, и getParent возвращает виджет, так что, скорее всего, моя кнопка.

Однако методы addChildren и removeChildren работают правильно, но моя кнопка всегда имеет первоначальный заголовок. Есть идеи почему? Надеюсь, это имеет смысл.

Любые предложения приветствуются. Спасибо.

Ответы [ 3 ]

2 голосов
/ 26 марта 2012

Если вы пытаетесь установить заголовок на viewCommentsButton, позвоните viewCommentsButton.setTitle().

Если вы пытаетесь установить текст в кнопке, наберите viewCommentsButton.setText().

Для любого из них вам нужно пометить кнопку как окончательную - объявите ее с final Button viewCommentsButton = ...

Контекст getParent() сбивает с толку. getParent(), способ, которым вы его используете, вернет родителя виджета, в котором вы все это определяете, НЕ родителя viewCommentsButton и определенно не самого viewCommentsButton.

2 голосов
/ 26 марта 2012

Сделайте вашу кнопку переменной класса, а не переменной метода, и тогда вы не сможете использовать ее (ссылаться на нее) в обработчике кликов.

Например:

viewCommentsButton = new Button("View "); //viewCommentButton is the private member.
    viewCommentsButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            if (!childrenVisible) {
                addChildren();
                viewCommentButton.setTitle("Close");
                viewCommentButton.setText("Close");
            } else {
                removeChildren();
                viewCommentButton.setTitle("View");
                viewCommentButton.setText("View");
            }
        }

    });
1 голос
/ 26 марта 2012

Вы должны использовать setText

setTitle является "всплывающей подсказкой"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...