浏览 3171 次
锁定老帖子 主题:Kuix组件Choice发现一个新的bug
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-16
最后修改:2010-11-16
本来想偷懒,利用choice的选择功能,实现按按钮后打开隐藏的choice的列表,实现选择功能,发现choice在visible=“false”的情况下,打开的鹅列表是无法显示选中项的,而且以后没选择一项,下次打开列表选中的项就会消失,重复操作列表最终会被清空。证实在原版的Kuix类库中出现上述问题,非本人修改出来的bug。
<choice id="cmbFilter" visible="false"> <choiceRadiogroup id="lstFilter" value="PublicDocFlow" onchange="test2(#lstFilter.value)"> <radiobutton value="1">a</radiobutton> <radiobutton value="2">b</radiobutton> <radiobutton value="3">c</radiobutton> </choice> <screenFirstMenu onAction="test">pop up</screenFirstMenu> 测试代码 public boolean onMessage(Object identifier, Object[] arguments) { if("test".equals(identifier)){ Choice obj = (Choice)screen.getWidget("cmbFilter"); obj.processActionEvent(); } return false; } 如果visible="true"则完全没有上述问题。 //*************************************************** 问题解决,choice有一个choiceContainer的子panel,作用不是很明确,似乎是用来存放选中的radiobutton的,当choice不可见时,不会触发其dolayout方法,而dolayout中会把choiceContainer中的选中项“放回”选择窗口中,所以导致弹出窗口看不到选中项,多次选中后全部radiobutton都放入了choiceContainer,却没有办法从choiceContainer拿回。这算是choice的一个bug。 实际上对于choiceContainer的作用我还弄不清楚,虽然提供了getChoiceContainer(),但是其它单元中并没有见到调用这个方法的,它似乎是用来临时存放选中项的,但是又看不出它有什么确切的作用,或许去掉它是更好的选择。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |