单击按钮时,需要在此操作中执行单击操作,应在此事件中执行更改事件源为空
我的代码: 的 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。
请任何人帮助改进或解决此查询
答案 0 :(得分:0)
有几个问题正在为此做出贡献。
changeListeners.fireChange(new ChangeEvent(){});
你已经接管了偶数应该被解雇的方式 - 而不是实际通过正确的事件接线,你已经创建了一个没有源的对象,将它传递给fireChange
(我打赌是changeListeners
中你自己的方法之一,虽然你没有列出它,除非Multiview.fireChange
自称...?),然后抱怨它没有来源!考虑从小部件中触发(我假设Mulitview是一个小部件),或在Multiview中创建handlerManager / eventBus并使用它来发送事件。
接下来,您手动触发DOM事件,这有点奇怪 - 这是一个意图从浏览器中的用户操作触发的事件。请改为ValueChangeEvent<T>
。