如何在Java Swing中使用复选框制作列表?

2022-09-01 08:10:46

在 Java Swing 中,最好有一个包含每个复选框的项目列表?

即,一个JList,其中包含一些文本和每个复选框的项目?


答案 1

一个很好的答案是这个CheckBoxList。它实现了Telcontar的答案(尽管比:)早了3年......我在Java 1.6中使用它没有问题。我还添加了一个这样的方法(当然可以更短,有一段时间没有使用Java了):addCheckbox

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的演示,玩了我遇到的一些问题(不起作用的行为)。如果我发现链接到的有问题,我会修改这个答案。CheckBoxListCheckBoxList


答案 2

创建自定义并将其签名到 .ListCellRendererJList

此自定义必须在方法的实现中返回 a。ListCellRendererJCheckboxgetListCellRendererComponent(...)

但是这个是不可编辑的,就是一个简单的画在屏幕上就由你来选择什么时候这个一定要“勾选”还是不勾选,JCheckboxJCheckbox

例如,在选择行时显示其勾选(参数),但这样,如果选择更改,则不会保留检查状态。最好显示它已检查咨询下面的数据,但随后由您来实现谁更改数据的检查状态的方法,并通知更改要重新绘制。isSelectedListModelJList

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

ListCellRenderer


推荐