如何通过编程取消com.jidesoft CheckBoxListComboBox的选中项
CheckBoxListComboBox 编程取消选中项解决方案
核心原因说明
CheckBoxListComboBox 的复选选中状态独立存储在专属的ListCheckBoxSelectionModel中,和下拉列表自带的JList默认选择模型、普通选择API逻辑分离,所以你之前的尝试无法生效。
两种常用取消选中方案
1. 清空所有选中项
直接复用你设置选中的API,传入空索引数组即可:
// 清空所有已选中的复选项 combo.setSelectedIndices(new int[0]);
2. 取消单个指定项的选中
先拿到组件的复选选择模型,再调用移除选中的方法即可:
// 获取复选专属选择模型 ListCheckBoxSelectionModel selectionModel = combo.getCheckBoxListSelectionModel(); // 取消索引为targetIndex的项的选中状态,两个参数都是目标索引即可 selectionModel.removeSelectionInterval(targetIndex, targetIndex);
如果需要取消指定对象的选中,先遍历组件的列表模型拿到对应索引,再执行上述操作即可。
你之前尝试的方法无效的原因
combo.setSelectedItem(item, false)的第二个参数是「是否触发选中事件」的开关,不是选中状态控制参数,传false仅代表不触发事件,仍会执行选中逻辑,所以会将目标项设为选中。combo.getList().clearSelection()操作的是JList默认的单选选择模型,和组件的复选状态完全独立,所以不会生效。
内容的提问来源于stack exchange,提问作者junaidp
相关产品推荐
相关产品推荐

