出于某种原因,即使默认情况下 JList
是一个多选列表,但当单击另一个选项时,您之前单击的任何选择都会被删除。另外,由于某种原因,必须按住 Ctrl 并单击才能进行其他选择
我尝试通过创建存储了 selectedIndices
的自定义 ListModel
来覆盖此问题,并将 MouseListener
添加到我的 JList
激活后,会将 list.getSelectedIndices()
附加到 listModel.selectedIndices
。然而,这种方法存在意想不到的问题:在对我的解决方案进行压力测试时(我确信在继续之前我已经解决了所有不可避免的编程错误!),我发现,例如,我可以有第二个列表选择了选项,但单击第一个选项,list.getSelectedIndices()
将返回第二个选项的索引(因此,我的算法将失败)。
是否有任何方法可以使每次点击实际上都会将单击的列表选项的索引添加(或删除)到list.getSelectedIndices()
,而无需我的解决方法?
Here是用于测试的 JAR 文件(DEBUG == true
因此调试输出可从命令行看到)。
最佳答案
I use JCheckBox as the ListCellRenderer
那么也许您应该使用带有 boolean 值的单列JTable
。每次单击单元格时,复选框的状态都会切换。
关于java - 覆盖 JList 的互斥性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33005744/