我有 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 B
中删除在 JLIst A
中单击的项目。我怎样才能做到这一点?
根据上面的代码,当我点击JList A
时,所有项目都会显示在JList B
中。我需要显示除 JList A
上选择的项目之外的所有项目。我怎样才能做到这一点?
allAnimals()
方法的签名;
public Map<String, Animal> allAnimals(String animalName);
最佳答案
所以我的理解是你只想更新 JList 中的内容。我之前完成的方法是创建一个 DefaultListModel 并将其分配给 JList。
DefaultListModel listModel = new DefaultListModel();
JList list = new JList(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();
我希望回答了您的问题。
关于java - 显示 JList 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13843325/