首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击GWT移除按钮

单击GWT移除按钮
EN

Stack Overflow用户
提问于 2015-10-20 12:25:03
回答 4查看 811关注 0票数 0

有一个问题-我想删除GWT的按钮后,从面板点击它。

就像这样:

代码语言:javascript
复制
    VerticalPanel vp3 = new VerticalPanel();
    vp3.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);

    final HorizontalPanel hp1 = new HorizontalPanel();
    hp1.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);

    final HTML fireCondText = new HTML("Fire conditions");
    fireCondText.setStyleName("h1");

    final HTML obscurity = new HTML("Obscurity:");
    obscurity.setStyleName("h3");

    final HTML statusObscurity = new HTML("NO");
    statusObscurity.setStyleName("no");
    if (statusObscurity.getHTML() == "YES") statusObscurity.setStyleName("yes");

    Button butObscurity = new Button(
            "Edit", new ClickHandler() {
                public void onClick(ClickEvent event) {
                    final Button butYes = new Button(
                            "YES", new ClickHandler() {
                                public void onClick(ClickEvent event) {
                                    statusObscurity.setHTML("YES");
                                    hp1.remove(butYes);
                                }
                            });
                    final Button butNo = new Button(
                            "YES", new ClickHandler() {
                                public void onClick(ClickEvent event) {
                                    statusObscurity.setHTML("NO");
                                    hp1.remove(butNo);
                                }
                            });
                    hp1.add(butYes);
                    hp1.add(butNo);                     
                }
            }
            );
    butObscurity.setStyleName("editButton");

但是,显然,eclipse在remove方法下划线,给出了错误:

局部变量butYes可能尚未初始化。

有谁知道怎么做吗?或者有什么办法可以绕过?

我也考虑过创建计数器,但这也不起作用。

对不起,如果这是个愚蠢的问题,但我在GWT方面还是新手。

搜索类似的问题,发现只有禁用,但这不是我所需要的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-20 12:40:20

在全球范围内声明按钮:

代码语言:javascript
复制
Button butYes = null;  
Button butNo = null;

然后修改您的方法:

代码语言:javascript
复制
            Button butObscurity = new Button(
                        "Edit", new ClickHandler() {
                            public void onClick(ClickEvent event) {
                                 butYes = new Button(
                                        "YES", new ClickHandler() {
                                            public void onClick(ClickEvent event) {
                                                statusObscurity.setHTML("YES");
                                                hp1.remove(butYes);
                                            }
                                        });
                                butNo = new Button(
                                        "YES", new ClickHandler() {
                                            public void onClick(ClickEvent event) {
                                                statusObscurity.setHTML("NO");
                                                hp1.remove(butNo);
                                            }
                                        });
                                hp1.add(butYes);
                                hp1.add(butNo);                     
                            }
                        }
                        );
票数 0
EN

Stack Overflow用户

发布于 2015-10-20 12:38:51

您正在尝试访问一个可能尚未初始化的变量。因此,首先创建按钮,然后附加ClickListener:

代码语言:javascript
复制
final Button butYes = new Button("YES");
butYes.addClickHandler(new ClickHandler() {
     public void onClick(ClickEvent event) {
         statusObscurity.setHTML("YES");
         hp1.remove(butYes);
     }
});
票数 1
EN

Stack Overflow用户

发布于 2015-10-20 16:32:31

该按钮将是ClickEvent的源,因此:

代码语言:javascript
复制
@Override
public void onClick(ClickEvent event) {
  // …
  hp1.remove((Widget) event.getSource());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33236625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档