由于某些原因,即使JList在默认情况下是多选列表,但当单击另一个选项时,先前单击的所有选择都将被删除。另外,由于某种原因,必须按住Ctrl并单击以进行其他选择

我试图通过以下方法来覆盖它:创建自定义的ListModel,其中已存储selectedIndices,并将MouseListener添加到我的JList中,该list.getSelectedIndices()在激活后会将listModel.selectedIndices附加到list.getSelectedIndices()。但是,这种方法存在一个意想不到的问题:在对我的解决方案进行压力测试时(我确信在继续之前,我已经解决了所有不可避免的编程错误!),例如,我发现我可以列出第二个列表选项被选中,但单击第一个选项,然后list.getSelectedIndices()将返回第二个选项的索引(因此,我的算法将失败)。

是否有任何方法可以使每次单击实际上将被单击列表选项的索引添加(或删除)到DEBUG == true,而无需我的解决方法?

Here是用于测试的JAR文件(,因此可从命令行看到调试输出)。

最佳答案

我使用JCheckBox作为ListCellRenderer


然后,也许您应该使用带有布尔值的单列JTable。每次单击单元格时,复选框的状态都会切换。

10-07 17:19