在 Java Swing 中有一个带有复选框的项目列表的最佳方法是什么?
即一个 JList,每个项目都有一些文本和一个复选框?
原文由 Shabaz 发布,翻译遵循 CC BY-SA 4.0 许可协议
一个很好的答案是这个 CheckBoxList
。它实现了 Telcontar 的答案(尽管 3 年前:)…我在 Java 1.6 中使用它没有问题。我还添加了一个 addCheckbox
这样的方法(当然可以更短,有一段时间没有使用 Java):
public void addCheckbox(JCheckBox checkBox) {
ListModel currentList = this.getModel();
JCheckBox[] newList = new JCheckBox[currentList.getSize() + 1];
for (int i = 0; i < currentList.getSize(); i++) {
newList[i] = (JCheckBox) currentList.getElementAt(i);
}
newList[newList.length - 1] = checkBox;
setListData(newList);
}
我尝试了 Jidesoft 东西的演示,玩了 CheckBoxList
我遇到了一些问题(无效的行为)。如果我发现我链接到的 CheckBoxList
有问题,我会修改这个答案。
原文由 Dan Rosenstark 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答745 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
创建自定义
ListCellRenderer
并将其分配给JList
。此自定义
ListCellRenderer
必须在getListCellRendererComponent(...)
方法的实现中返回JCheckbox
。但是这个
JCheckbox
将不可编辑,是屏幕上的简单绘画由您选择,当这个JCheckbox
必须“勾选”或不勾选时,例如,在选择该行时显示滴答作响(参数
isSelected
),但是如果选择更改,则不会对检查状态进行调整。最好显示它已检查ListModel
下方的数据,但随后由您实施更改数据检查状态的方法,并将更改通知JList
重新粉刷。如果您需要,我稍后会发布示例代码
ListCellRenderer