我有一個奇怪的問題 - 不確定是否存在編碼錯誤或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