在JList中显示值 -

时间:2012-12-10 10:45:08

标签: java swing model hashmap jlist

我有一个返回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中显示其所有动物ID。我怎么能这样做?

2 个答案:

答案 0 :(得分: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];
        }

答案 1 :(得分:1)

您的AbstractListModel是匿名的,因此请先将其推广到指定的类,例如MyListModel。然后向MyListModel添加一个方法,该方法接受Map或调用allAnimal()以获取一个方法。在您的模型中引用Map之后,您可以将keySet转换为数组,如图所示here,并使用get()每个Map的密钥1}} getElementAt()中的条目。 (可选)使用Arrays.sort()对数组进行排序。