2

我有一个返回 a 的方法,HashMap定义如下;

public HashMap<Integer, Animal> allAnimal(){

      return returnsAHashMap;
   }

Animal在其类中将具有以下值:

public Animal{

int animalID;
String animalName;

// i have declared getters/setters
}

我有一个 GUI 屏幕,它有一个JList,它被定义为:

l = new JList();
l.setModel(new AbstractListModel() {

        String[] v = new String[] {"animal id 1", "2", "3"};
        public int getSize() {
            return v.length;
        }
        public Object getElementAt(int index) {
            return v[index];
        }
    });

我想要做的是在 JList 中显示 AnimalID。我需要找到一种方法来调用该allAnimal()方法并在JList. 我怎样才能做到这一点 ?

4

2 回答 2

1

你可以试试:

public int getSize() {
    return allAnimal().size();
}
public Object getElementAt(int index) {
    return allAnimal().keySet().toArray()[index];
}

或者可以尝试:

        String[] v = null;
        v = allAnimals().keySet().toArray(v);
        public int getSize() {
            return v.length;
        }
        public Object getElementAt(int index) {
            return v[index];
        }
于 2012-12-10T11:02:28.523 回答
1

AbstractListModel是匿名的,所以首先将它提升到一个命名类,例如MyListModel. 然后添加一个方法来MyListModel接受一个Map或调用allAnimal()来获得一个。一旦您在模型中引用了Map,就可以将 转换keySet为数组,如此处所示get()并使用 中每个Map条目的键getElementAt()。(可选)使用 对数组进行排序Arrays.sort()

于 2012-12-10T11:03:56.050 回答