我有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);
答案 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();
我希望能回答你的问题。