您好我使用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方法正常工作,但我的按钮始终具有初始标题。有什么想法吗?希望这是有道理的。
欢迎任何建议。感谢。
答案 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是“工具提示”