java - 覆盖 JList 的互斥性

标签 java swing jlist

出于某种原因,即使默认情况下 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/

相关文章:

java - 用键插入android数据库

java - 将面板内容与面板顶部对齐

Java 图形用户界面问题

java - 将 ListCellRenderer 应用于 JList 上的各个单元格

java - 从 stbtt_PackFontRange 切换到 stbtt_PackFontRanges 时我做错/遗漏了什么?

java - Spring Boot 应用程序的 Azure 发布管道表示没有可发布的工件

java - JTextField.setText() 不能作为数组在方法中工作

java - 检查 JList 是否具有特定值

java - 关于如何将文本字段中的内容添加到 JList 中

java - 从线程调用 bean 时,范围类型 javax.enterprise.context.RequestScoped 没有 Activity 上下文