更改按钮标题问题

时间:2012-03-26 13:10:39

标签: java gwt

您好我使用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 个答案:

答案 0 :(得分:2)

如果您尝试在viewCommentsButton上设置标题,请致电viewCommentsButton.setTitle()

如果您尝试在按钮中设置文字,请拨打viewCommentsButton.setText()

对于其中任何一个,你必须将按钮标记为最终 - 用final Button viewCommentsButton = ...声明它

getParent()的背景令人困惑。 getParent(),您使用它的方式,将返回您定义所有这些内容的小部件的父级,而不是viewCommentsButton的父级,而不是viewCommentsButton本身。

答案 1 :(得分:2)

使你的按钮成为一个类变量,而不是一个方法变量,而不是你能够在点击处理程序中使用它(参考它)。

例如:

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");
            }
        }

    });

答案 2 :(得分:1)

你应该使用setText

setTitle是“工具提示”