如何将HashMap数据库项迭代到ComboBox上

时间:2017-12-01 06:37:52

标签: javafx

我已经从我的数据库创建了一个HashMap。现在我希望将HashMap显示给名为cmbCourses的ComboBox。我的代码的问题是它被读取为String而不是ObservableList,我如何迭代值以匹配ObservableList?

这是我的代码:

public void populateCourse() {
    QueryCombo qc = new QueryCombo();
    HashMap<String, Integer> map = qc.hashMap();

    for (String s : map.keySet()) {
        cmbCourse.setItems(s);
    }
}

2 个答案:

答案 0 :(得分:0)

您的循环仅获得 Hashmap 键,我认为您需要一个键映射对象来设置cmbCourse

你可以这样做,

for (String s : map.keySet()) {
        cmbCourse.addItem(map.get(s));
    }

但这不是迭代。

这是如何进行正确的迭代

HashMap<String, Integer> map = qc.hashMap();
Iterator it = map.entrySet().iterator();

while (it.hasNext()) {
    Map.Entry pair = (Map.Entry)it.next();
    System.out.println(pair.getKey()); // this is your key
    System.out.println(pair.getValue()); //  // this is your key mapped value 
    it.remove(); // avoids a ConcurrentModificationException
}

答案 1 :(得分:0)

您可以自己创建ObservableList<String>

ObservableList<String> items = FXCollections.observableArrayList(items.keySet());
cmbCourse.setItems(items);

或只是填写ComboBox

的现有项目列表
cmbCourse.getItems().setAll(map.keySet());

我假设您希望列表包含密钥btw。