我想在单击一次时禁用锚链接事件。我使用anchor.setenabled(false)
但没有发生任何事情。当我再次点击同一按钮时,事件e
为true
。我当时想要false
。
public void onCellClick(GridPanel grid, int rowIndex, int colindex,EventObject e)
{
if(rowIndex==0 && colindex==2){
tomcatHandler = "Start";
anchorStart.setEnabled(false);
}else if(rowIndex==0 && colindex==3){
tomcatHandler = "Stop";
****anchorStop.setEnabled(false);
anchorStart.setEnabled(false);
anchorRestart.setEnabled(true);****
}else if(rowIndex==0 &&colindex==4){
tomcatHandler = "Restart";
anchorRestart.setEnabled(false);
}
AdminService.Util.getInstance().tomcat(tomcatHandler,new AsyncCallback<String>() {
@Override
public void onSuccess(String result) {
imageChangeEvent(result);
}
@Override
public void onFailure(Throwable caught) {
}
});}
答案 0 :(得分:3)
GWT中的锚点始终存在setEnabled()
的问题,因为HTML不支持此类属性。一个快速的解决方法是创建一个新的小部件,它将GWT的Anchor
子类化,添加以下覆盖:
@Override
public void onBrowserEvent(Event event) {
switch (DOM.eventGetType(event)) {
case Event.ONDBLCLICK:
case Event.ONFOCUS:
case Event.ONCLICK:
if (!isEnabled()) {
return;
}
break;
}
super.onBrowserEvent(event);
}
当双击,聚焦或点击链接并处于禁用状态时,这会禁用将浏览器事件传递给GWT的Anchor
类(简要地禁用所有相关处理程序)。
答案 1 :(得分:0)
它似乎没有实际禁用锚点,但它确实保留了使用anchor.setEnabled()设置的状态,所以只需在你的处理程序中测试它,例如
myAnchor.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent evt) {
// write to filter and then call reload
if (((Anchor) evt.getSource()).isEnabled()) {
//do stuff
}
}
});