当前位置: 首页 > 知识库问答 >
问题:

从Hashmap填充JList并检索键

薛霄
2023-03-14

我如何从一个HashMap填充JList而只在列表中显示值呢?

public void populateListwithCategories(final JList list) {
    try {
        DefaultListModel listModel = new DefaultListModel();
        List<AdvertisementCategory> advertisementCategories = advertisementCategoryProvider.getAdvertisementCategories();
        for (AdvertisementCategory advertisementCategory : advertisementCategories) {               
            int id = advertisementCategory.getId();
            String name = advertisementCategory.getName();
            advertisementCategory.advertisementMap.put(id, name);
            listModel.addElement(advertisementCategory.advertisementMap); 
        }
        list.setModel(listModel);
    } catch (MalformedURLException ex) {
        Logger.getLogger(AdvertisementCategoryController.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(AdvertisementCategoryController.class.getName()).log(Level.SEVERE, null, ex);
    }
}
public class AdvertisementCategory {

private int id;
private String name, description;
public List<AdvertisementCategory> advertisementCategories;

public Map<Object, String> advertisementMap = new HashMap<>();

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public AdvertisementCategory(int id, String name, String description) {
    this.id = id;
    this.name = name;
    this.description = description;
}

public AdvertisementCategory(String name, String description) {
    this.name = name;
    this.description = description;
}

public AdvertisementCategory() {

}

public AdvertisementCategory(int id, String name) {
    this.id = id;
    this.name = name;
}

共有1个答案

狄凯
2023-03-14

您试图为一个不存在的问题实现一个相当复杂的解决方案。

使用Swing的MVC-principles,您可以将AdvertismentCategory直接添加到列表模型中,并实现ListCellRenderer来从AdvertismentCategory实例提取显示值,该值应该显示在JList本身中。然后,在JList上调用getSelectedValue()将为您提供AdvertismentCategory实例,并且您可以访问它的所有内容。

 类似资料:
  • 第一个类称为FileReader,它读取一个逐行写入的txt文件,我们需要的每个字段都用“;”分隔,例如(“哥伦比亚大学”;“美国”;78.86;2012)。每行包含2个字符串(大学名和国家)和2个数字(分数和年份)。FileReader类在读取txt文件后,在ArrayList中返回其内容。 该作业的第二个类称为UniversityScores,它有4个字段(uniname、country、sc

  • 所以我用Java处理这些数据: 我需要将其转换为JSON: 但是我不知道怎么做。 目前我认为这是最好的方法: 但我不确定如何使用Hashmap实现这一点。我知道是这样的: 但确切的语法,以及如何将其与其他数据一起添加,我无法计算。有什么想法吗?

  • 我有一个有两列的表,一个是string,另一个是double Type。例如, 我正在尝试读取所有的值,并将它们加载到中 我在读取表数据方面没有任何问题,但不能按我的要求将它们放入HashMap中。 我编写了一个示例代码来从两个不同的数组(string和double)填充一个HashMap,但仍然无法处理HashMap的值部分,它是一个数组。 任何建议我如何处理HashMap的值部分,它是一个数组

  • 代码: 我正在尝试从通过Read_file按钮读取的文本文件填充jlist 我能够正确获取文件路径和文件内容,我用print语句验证了这些文件,但我的jlist仍然是空的。在设计中,我检查了jlist的变量名,两者都与我在代码中使用的匹配。

  • 作为我作业的一部分,我们得到了一个我们不能更改的接口,以及一些用来开发我们方法的预定义测试。 界面如下: 我正在运行的特定测试: 以及我需要从测试中创建的方法: 从测试中我可以看出,在方法中,我需要创建并用注册映射中匹配的学生填充它,然后返回列表。 我创建了以下字段:- 我搞不懂的是,如何将注册地图中的数据传递到学生列表中,以使测试中的断言为真。

  • 我正在尝试用名字填充JList,这些名字最终将添加到AddressBook GUI中。我想我的逻辑是,创建JList,通过一个从文本文件中读取名称的方法填充它,然后将JList添加到我的面板中。 我的文本文件如下所示: 但它只是打印出1-10个,而不是名字。我假设这是因为我使用了而不是其他东西,有什么建议吗?