在JList中显示项目

时间:2012-12-12 15:42:28

标签: java swing jlist

我有2个JList个组件。当我点击JList A中的某个项目时,JList 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);

1 个答案:

答案 0 :(得分: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();

我希望能回答你的问题。