2012-03-26 84 views
0

您好我使用GWT和我有了下面的事件处理程序一个com.smartgwt.client.widgets.Button:更改按钮标题问题

 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()方法但没有效果。如果工作正常,所以我想我不能得到我的按钮对象的引用,但代码编译和getParent返回一个小部件,所以很可能是我的按钮。

但是,addChildren和removeChildren方法正常工作,但我的按钮始终都有初始标题。任何想法为什么?希望这是有道理的。

欢迎任何建议。谢谢。

回答

2

如果你想设置标题上viewCommentsButton,叫viewCommentsButton.setTitle()

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

不论是出于你必须标记按钮,最后 - 与final Button viewCommentsButton = ...

声明它的getParent()的背景是混乱。 getParent(),您使用它的方式将返回您定义所有这一切的小部件的父级,而不是viewCommentsButton的父级,并且绝对不是viewCommentsButton本身。

+0

我会在7分钟内接受。我有这个选择开始,但我不得不声明变量全局或最终,我想给它一个镜头。 +1 – Fofole 2012-03-26 13:18:56

1

您应该使用的setText

是的setTitle的 “提示”

+0

我没有为我的按钮oject使用setText方法可以。 – Fofole 2012-03-26 13:15:42

+0

奇怪的http://google-web-toolkit.googlecode.com/svn/javadoc/2.3/com/google/gwt/user/client/ui/Button.html记录它 – 2012-03-26 13:20:15

+0

您是对的。但我使用com.smartgwt.client.widgets.Button而不是com.google.gwt.user.client.ui.Button,它们有些不同。然而,尝试帮助+1。 – Fofole 2012-03-26 13:24:26

1

使你的按钮成为一个类变量,而不是一个方法变量,并且你可以在点击处理程序中使用它(引用它)。

例如:

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

    }); 
+0

+1你说得对,虽然我主要担心的是如果getParent()让我引用我的按钮或不。 – Fofole 2012-03-26 13:25:43

+0

我想像一些人提到的那样,它指的是父窗口小部件,通常是窗格或输入,而不是按钮。 – biplav 2012-03-26 13:28:00