我正在尝试从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跟踪所选索引。

09-27 23:43