GWT clickHandler - 条件失败

时间:2013-09-02 03:05:07

标签: java gwt

我在类中定义了一个单击处理程序方法。如果单击屏幕上的取消按钮,我会尝试调用特定方法。 这是代码片段 -

    boolean tempCheck;

    @Override
    protected void onBind() {

    super.onBind();

    ...
    ...

    getViewName().getVar().addClickHandler(new ClickHandler() {

    @Override
    public void onClick(final ClickEvent event) {

    //Doing some operation and making tempCheck true

    tempCheck = true;       

    }
    });


    If(tempCheck){

    this.box.getButtonName().addClickHandler(new ClickHandler() {
        @Override
        public void onClick(final ClickEvent event) {

        this.box.hide();
        this.getViewName().hide();
    }
    });

    } else {


    this.callToMethodA();

    }

}

单击该按钮时,tempCheck布尔变量变为true。

  

tempCheck = true;

但如果条件失败,它总是进入其他部分。

  

如果(tempCheck)

为什么会这样?这是因为java管理的闭包? 注意:如果条件必须在块之外,因为this.callToMethodA()也被其他单击处理程序使用。

2 个答案:

答案 0 :(得分:3)

当你调用addClickHandler()时,它会创建处理程序并立即继续下一个语句(在这种情况下为If(tempCheck))。它不会等待点击按钮,正如您似乎所假设的那样。所以tempCheck此时总是假的。

点击按钮后要执行的任何代码都必须放在onClick()方法内,或放在从onClick()调用的方法内。

答案 1 :(得分:0)

您对事件处理的思考方式是错误的.....当您单击关闭按钮时,您必须在onClick()本身旁边编写功能,无论您想执行哪个。  但是这里你正在做的只是改变一个变量值...你没有在onClick()内做你想做的功能 我希望你明白......即使你不明白这一点......想一想......你可以知道你的愚蠢错误......