Java AbstractListModel是否有getSelectedIndex()方法?
我试图从AbstractListModel的实现中获取所选项目。我应该使用哪种类型的侦听器?似乎只有ListDataListener类,但它似乎没有我想要的功能 谢谢你的帮助 实施情况如下:Java AbstractListModel是否有getSelectedIndex()方法?,java,swing,Java,Swing,我试图从AbstractListModel的实现中获取所选项目。我应该使用哪种类型的侦听器?似乎只有ListDataListener类,但它似乎没有我想要的功能 谢谢你的帮助 实施情况如下: class MyListModel extends javax.swing.AbstractListModel<String> { private final ArrayList<String> myArrayList = new ArrayList<String&g
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(); }
}
MyListModel类扩展了javax.swing.AbstractListModel{
私有最终ArrayList myArrayList=新ArrayList();
公共无效加法器(字符串obj){
if(obj==null | | obj.isEmpty())返回;
myArrayList.add(obj);
fireIntervalAdded(this,myArrayList.size()-1,myArrayList.size()-1);
}
公共无效删除(字符串obj){
int idx=myArrayList.indexOf(obj);
如果(idx!=-1){
myArrayList.remove(obj);
fireIntervalRemoved(此,idx,idx);
}
}
@凌驾
公共字符串getElementAt(int-index){return myArrayList.get(index);}
@凌驾
public int getSize(){return myArrayList.size();}
}
getSelectedIndex()方法不是模型的方法,而是视图(JList)
的方法。模型可能由多个视图共享,因此无法跟踪模型中的选择
JList
使用ListSelectionModel
跟踪所选索引。@jsc123,我刚刚告诉过你。模型只存储数据,并在数据更改时通知视图。视图绘制数据。那么Camickr,你建议我如何使用基于ArrayList的ListModel实现,以允许我访问突出显示的项目?@jsc123,你不必做任何事情。该视图已包含所有这些信息。JList具有允许您访问模型中数据的方法。JList具有允许您访问所选索引的方法。这不是您应该尝试在模型中执行的操作。如果您认为您需要在模型中这样做,那么您的设计是错误的。所以我不能使用AbstractListModel,如上所示?我如何使用具有ArrayList功能的JList?@jsc123,我下午就要离开了。我建议您阅读上Swing教程的部分。ListDemo
展示了使用列表的基础知识,包括如何使用getSelectedIndex()方法从列表中动态删除行。