0

我有 2 个JList组件。当我从 中单击一个项目时JList AJList B将被填充。

两者都JList将显示相同的记录集。(但是,如果我们单击 中的一个项目JList A,该项目不应该显示在 中JList B)。我怎样才能做到这一点?

我的工作:

listA.addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent evt) {
        if (evt.getValueIsAdjusting()==false) {             
            listB.setModel(new AbstractListModel() {
                public int getSize() {
                    return allAnimals("Lions").size();
                }
                public Object getElementAt(int index) {
                    return allAnimals("Lions").keySet().toArray()[index];
                }
        });

但是,我无法删除JLIst A从中单击的项目JList B。我怎样才能做到这一点?

根据上面的代码,当我点击 时JList A,所有项目都显示在JList B. 我需要显示除上选择的项目之外的所有项目JList A。我怎样才能做到这一点?

方法签名allAnimals()

public Map<String, Animal> allAnimals(String animalName);
4

1 回答 1

2

所以我的理解是你只想更新 JList 中的内容。我之前的做法是创建一个 DefaultListModel 并将其分配给 JList。

DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);

从那里,您可以从 listmodel 添加或删除元素,JList 将自动更新。

//add new element to the listmodel
listModel.add(/*index*/ 0, /*random object content*/ "Lions");

//remove specific element
listModel.remove(0);

//remove specific object
listModel.removeElement(someObject);

//remove all elements
listModel.removeAllElements();

我希望这回答了你的问题。

于 2012-12-12T16:16:18.007 回答