我正在尝试从AbstractListModel的实现中获取选定的项目。我应该使用哪种类型的监听器?似乎只有ListDataListener类,但是似乎没有我想要的功能。
谢谢你的帮助!
实施如下:
class MyListModel extends javax.swing.AbstractListModel<String> {
private final ArrayList<String> myArrayList = new ArrayList<String>();
public void addElement(String obj) {
if(obj==null || obj.isEmpty()) return;
myArrayList.add(obj);
fireIntervalAdded(this, myArrayList.size()-1, myArrayList.size()-1);
}
public void removeElement(String obj) {
int idx = myArrayList.indexOf(obj);
if(idx!=-1) {
myArrayList.remove(obj);
fireIntervalRemoved(this, idx, idx);
}
}
@Override
public String getElementAt(int index) { return myArrayList.get(index); }
@Override
public int getSize() { return myArrayList.size(); }
}
最佳答案
getSelectedIndex()
方法不是model
的方法,它是view (JList)
的方法。一个模型有可能被多个视图共享,因此无法跟踪模型中的选择。JList
使用ListSelectionModel
跟踪所选索引。