我有一个奇怪的问题 - 不确定是否存在编码错误或CN1中的错误。在CodenameOne中,为什么复选框未选中,但出现选中?
基本上我创建了一行CheckBox对象,并将它们放在一个X-Scrollable容器中。如果我点击一个未选定的项目并拖动,直到“弹性”效果将其拉回,它似乎被选中,但代码不会将其记录为选定项目。
请参阅问题的以下视频: https://youtu.be/EtputE1kjyo
注意,在控制台输出,“选择”这个词时,已经选择了场,当它处于未选中资本小写。焦点相同(我将焦点添加到输出以确定setFocusable()是否按照需要工作,以便焦点不应归咎于选择错误)。
这里的复选框创建代码:
cb = new CheckBox(getCacheableImageMaxHeight(mod.getIconFile(),moduleImageHeight));
cb.setName(mod.getModuleID());
cb.setToggle(true);
cb.setUIID("ModuleButton");
cb.setFocusable(false);
cb.setScrollVisible(false);
cb.setTextPosition(Component.BOTTOM);
cb.setCloudDestinationProperty(cb.getName());
//actionlistener added for debugging only
final CheckBox cbFinal = cb;
final String modName = mod.getDisplayName();
cb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
System.out.println(modName+", "+(cbFinal.isSelected()?"SELECTED":"selected") + ", " + (cbFinal.hasFocus()?"FOCUS":"focus"));
}
});
c.addComponent(cb);
更新:我已经意识到有两个“国家”的战争在这里: 的的ToggleButtons(我现在认识到他们不是仅仅的CheckBox,因为我set“setToggle(true))会被拖拽到”按下“状态,因为它们是通过”弹性“效果拖动和释放的。不幸的是,”按下“和”选定“状态具有相同的外观,这意味着我的用户认为他们已经选择了一些东西,只是在拖动操作过程中被卡住“按下”。
- 第一按钮被按下,但没有选择(错误)。
- 第二个按钮是正常选择,并没有显示错误。
- 第三个按钮很有趣,因为我选择了它,然后拖动并释放它以使其被选择并按下!
所以问题变为:是否有一个开放的错误造成这种局面已经(按下状态得到释放按钮后卡住),如果是这样,有来修复或现在的解决方法?
我认为这是因为'CheckBox'被设置为一个'ToggleButton',你的点击拖动滚动保持有点太长。 – Diamond