Java ZK Radiogroup返回不正确的getSelectedIndex()
我正在使用ZK 8.5.2.1,我有一个带有Java ZK Radiogroup返回不正确的getSelectedIndex(),java,zk,Java,Zk,我正在使用ZK 8.5.2.1,我有一个带有Radiogroup的弹出窗口。zul: <zk xmlns="http://www.zkoss.org/2005/zul" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd"> <pop
Radiogroup
的弹出窗口。zul
:
<zk xmlns="http://www.zkoss.org/2005/zul" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">
<popup use="com.myproject.webapp.docbrowse.filter.FiltrationModePopup" width="330px">
<vlayout sclass="content">
<hlayout>
<label sclass="title" value="List form setup"/>
</hlayout>
<radiogroup id="rgScrollerMode" sclass="scrollermode-radio">
<grid>
<rows>
<row sclass="radio-border">
<radio label="Standart"/>
</row>
<row sclass="radio-border">
<radio label="Archive / Select year"/>
<hlayout id="archivePanel" use="com.myproject.webapp.docbrowse.ArchivePanel"/>
</row>
<row sclass="radio-border">
<radio label="Trash"/>
</row>
</rows>
</grid>
</radiogroup>
. . .
<div align="right">
<button id="okButton" label="Accept" sclass="acceptButton"/>
<button id="cancelButton" label="Cancel" sclass="cancelButton"/>
</div>
</vlayout>
</popup>
</zk>
所以,当弹出窗口显示在屏幕上,我选择一些单选项目并按下“接受”按钮时,selectedIndex并不总是正确的。有时是-1,有时是旧的选定值,有时是正确的。怎么了?我简化了您的代码,它总是得到正确的选定索引
public class FiltrationModePopup extends Popup implements AfterCompose, IdSpace {
private Radiogroup rgScrollerMode;
@Override
public void afterCompose() {
rgScrollerMode = (Radiogroup) getFellow("rgScrollerMode");
final Button okButton = (Button) getFellow("okButton");
okButton.addEventListener(Events.ON_CLICK, new SerializableEventListener<Event>() {
@Override
public void onEvent(Event event) {
System.out.println(rgScrollerMode.getSelectedIndex());
close();
}
});
addForward(Events.ON_OK, okButton, Events.ON_CLICK);
}
}
public类过滤模式弹出窗口扩展弹出窗口实现后组合,IdSpace{
专用放射组rgScrollerMode;
@凌驾
公共空间{
rgScrollerMode=(放射组)getFellow(“rgScrollerMode”);
最终按钮okButton=(按钮)getFellow(“okButton”);
okButton.addEventListener(Events.ON_单击,新建SerializableEventListener()){
@凌驾
公共无效事件(事件){
System.out.println(rgScrollerMode.getSelectedIndex());
close();
}
});
addForward(Events.ON_确定、OK按钮、Events.ON_单击);
}
}
在调用
getSelectedIndex()
之前,需要跟踪发生的情况。您可以在onClick listener中注释掉代码,然后逐行逐步添加代码以找出根本原因。我缓存了scrollerMode
,因为我同意,它经常调用。之后,我为RadioGroup
的OnCheck
事件制作了EventListener
。似乎效果更好,但并非总是如此。无论如何,非常感谢!
public class FiltrationModePopup extends Popup implements AfterCompose, IdSpace {
private Radiogroup rgScrollerMode;
@Override
public void afterCompose() {
rgScrollerMode = (Radiogroup) getFellow("rgScrollerMode");
final Button okButton = (Button) getFellow("okButton");
okButton.addEventListener(Events.ON_CLICK, new SerializableEventListener<Event>() {
@Override
public void onEvent(Event event) {
System.out.println(rgScrollerMode.getSelectedIndex());
close();
}
});
addForward(Events.ON_OK, okButton, Events.ON_CLICK);
}
}