gwt利用HandlerManager创建event事件

本文介绍如何在GWT中通过HandlerManager自定义事件处理流程。具体包括创建删除事件类、事件监听器接口及对话框组件,并展示了如何在点击事件触发时进行删除确认与反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gwt利用HandlerManager创建event事件

By 王军, 2010年02月1日 11:49 下午

    在学习和使用gwt过程中,会使用到大量的事件处理,是利用各个组件的监听器来完成的,很方便。但是有些情况我们需要自己定义一个事件,用来创建监听器。就像下面例子中的,当点击删除时,在另一个类中创建了一个对话框,当点击确认之后要把此事件告送给当前类,那么就需要在当前类里面创建监听器来实现.例子:

image

点击确认:

image

 

实现代码:

1、创建删除事件

。。。

public class DeleEvent extends GwtEvent<DeleEventHander> {

    public static Type<DeleEventHander> TYPE = new Type<DeleEventHander>();
    private boolean is_Del_Success;

    public DeleEvent(boolean is_Del_Success) {
        this.is_Del_Success = is_Del_Success;
    }

    @Override
    protected void dispatch(DeleEventHander deleEventHander) {
        if (is_Del_Success) {
            deleEventHander.deleSuccess();
        } else {
            deleEventHander.deleFail();
        }
    }

    @Override
    public com.google.gwt.event.shared.GwtEvent.Type<DeleEventHander> getAssociatedType() {
        return TYPE;
    }

}

。。。

2、创建删除事件的监听器

public interface DeleEventHander extends EventHandler{
    void deleSuccess();
    void deleFail();

}

3、创建删除对话框

public class DeleTools {
    private HandlerManager handlerManager;
    private DialogBox dialogBox;
    public DeleTools()
    {
        dialogBox = new DialogBox();
        dialogBox.setText("确实要删除吗?");
        HorizontalPanel horizontalPanel = new HorizontalPanel();
        Button button = new Button("确认");
        Button button2 = new Button("取消");
        horizontalPanel.add(button);
        horizontalPanel.add(button2);
        dialogBox.add(horizontalPanel);
        dialogBox.setGlassEnabled(true);
        dialogBox.center();
        handlerManager=new HandlerManager(dialogBox);
        button.addClickHandler(new ClickHandler() {
            //确定删除
            @Override
            public void onClick(ClickEvent clickEvent) {
                handlerManager.fireEvent(new DeleEvent(true));
                dialogBox.hide();
                dialogBox.clear();
                dialogBox.removeFromParent();
            }
        });
        button2.addClickHandler(new ClickHandler() {
            //取消删除
            @Override
            public void onClick(ClickEvent clickEvent) {
                handlerManager.fireEvent(new DeleEvent(false));
                dialogBox.hide();
                dialogBox.clear();
                dialogBox.removeFromParent();
            }
        });
    }
    /**
     * @return the handlerManager
     */
    public HandlerManager getHandlerManager() {
        return handlerManager;
    }
}

4、创建根目录

public class Gwt_event implements EntryPoint {
    public void onModuleLoad() {
        final FlexTable flexTable=new FlexTable();
        flexTable.setWidth("100%");
        flexTable.setBorderWidth(1);
        init(flexTable);
        RootPanel.get("nameFieldContainer").add(flexTable);

    }
    public void init(final FlexTable flexTable)
    {
        flexTable.clear();
        flexTable.setText(0, 0, "用户名");
        flexTable.setText(0, 1, "密码");
        flexTable.setText(0, 2, "删除");
        for(int i=0;i<9;)
        {
            i++;
            flexTable.setText(i, 0, "username"+i);
            flexTable.setText(i, 1, "password"+i);
             Anchor anchor=new Anchor("删除");
            anchor.setName(i+"");
            flexTable.setWidget(i, 2, anchor);
            anchor.addClickHandler(new ClickHandler() {
                @Override
                public void onClick(ClickEvent event) {
                    final Anchor anchor=(Anchor)event.getSource();
                    DeleTools deleTools=new DeleTools();
                    deleTools.getHandlerManager().addHandler(DeleEvent.TYPE, new DeleEventHander() {
                        @Override
                        public void deleSuccess() {
                            flexTable.removeRow(Integer.parseInt(anchor.getName())-1);
                        }
                        @Override
                        public void deleFail() {
                        }
                    });
                }
            });
        }
    }
}

源代码:http://wangjun-memory.googlecode.com/svn/trunk/gwt_event/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值