Fire Change事件源在GWT中为NULL

时间:2015-08-10 11:15:55

标签: java gwt onclick

单击按钮时,需要在此操作中执行单击操作,应在此事件中执行更改事件源为空

我的代码: Multiview.java

@Override
public void onClick(ClickEvent event) {
    if(event.getSource() instanceof PushButton)
    {           
        PushButton pb = (PushButton)event.getSource(); 
        if (id.equals("New")) {                     
            int rowNO = startRow + tableModel.rows() - 1;
            Window.selectedRow = rowNO;
            Window.selectedNode = m_node;
            Window.tabNo = multicomponentVO.tabNo;
            Window.tabVO = tabfieldsVO;
            Window.selectedqueryID=queryID;
            Window.cVO = multicomponentVO;
            Window.selectedcVO=multicomponentVO;                                                        
            fireChange("viewnew");
        }
     }

   private void fireChange(String action) {
    this.action = action;
    if (changeListeners != null) {          
        changeListeners.fireChange(new ChangeEvent(){});
    }               
}   

Window.java

@Override
public void onChange(ChangeEvent event) {       
    Widget sender=(Widget)event.getSource();
    if(sender instanceof Multiview)
   {
       // some stuff
    }

我的查询是当在multiview.java中触发更改事件时,它在window.java中触发onchange但是我获取事件源是null。

请任何人帮助改进或解决此查询

1 个答案:

答案 0 :(得分:0)

有几个问题正在为此做出贡献。

        changeListeners.fireChange(new ChangeEvent(){});

你已经接管了偶数应该被解雇的方式 - 而不是实际通过正确的事件接线,你已经创建了一个没有源的对象,将它传递给fireChange(我打赌是changeListeners中你自己的方法之一,虽然你没有列出它,除非Multiview.fireChange自称...?),然后抱怨它没有来源!考虑从小部件中触发(我假设Mulitview是一个小部件),或在Multiview中创建handlerManager / eventBus并使用它来发送事件。

接下来,您手动触发DOM事件,这有点奇怪 - 这是一个意图从浏览器中的用户操作触发的事件。请改为ValueChangeEvent<T>