如何在 Java Swing 中创建一个带有复选框的列表?

新手上路,请多包涵

在 Java Swing 中有一个带有复选框的项目列表的最佳方法是什么?

即一个 JList,每个项目都有一些文本和一个复选框?

原文由 Shabaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 949
2 个回答

创建自定义 ListCellRenderer 并将其分配给 JList

此自定义 ListCellRenderer 必须在 getListCellRendererComponent(...) 方法的实现中返回 JCheckbox

但是这个 JCheckbox 将不可编辑,是屏幕上的简单绘画由您选择,当这个 JCheckbox 必须“勾选”或不勾选时,

例如,在选择该行时显示滴答作响(参数 isSelected ),但是如果选择更改,则不会对检查状态进行调整。最好显示它已检查 ListModel 下方的数据,但随后由您实施更改数据检查状态的方法,并将更改通知 JList 重新粉刷。

如果您需要,我稍后会发布示例代码

ListCellRenderer

原文由 Telcontar 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题