【问题标题】:Iterate through hashmap and add items to swing jcombobox遍历hashmap并将项目添加到swing jcombobox
【发布时间】:2013-01-06 19:03:15
【问题描述】:

我正在开发我的第一个 Java 应用程序,但我被困在这部分,我需要用哈希图中的项目填充我的组合框。

我正在使用模型视图控制器方法并尝试从 GUI 中填充组合框。因此,在用户单击按钮后,将调用一个方法,该方法应与控制器对话并请求组合框的项目。控制器应将项目发送回 GUI,然后可以填充组合框。

因此,在我的一个模型文件中,我创建了一个哈希图并通过我的控制器向其中添加项目。

hashmap 如下所示:

HashMap<Integer, Customer> customerRegisterHashMap = new HashMap<Integer, Customer>();

让我们假设地图现在根据 Customer 类属性填充了示例数据。

现在,我想我需要在控制器或模型本身中实现一个方法,该方法遍历上面的哈希图并返回数据(集合?)。

我会(另一个假设,可能没有必要)需要再次遍历这些数据,只是这次在 GUI 类中,并将项目一个一个地添加到组合框中。

所以项目看起来像这样:5 个文件,Controller、Customerregister、Customer、Frame 和一个显示 Frame 的应用程序文件。

非常感谢您的任何建议。

【问题讨论】:

  • 看起来不错。如果有什么您无法弄清楚并需要帮助,请说明您的问题。
  • 为了获得更好的帮助,请尽快发布SSCCE,简短,可运行,可编译,大约是JFrame,带有一个JComboBoxHashMap, splitted (your view) to MVC 中的硬编码值`
  • “这里是 SSCCE。” 22Kb 的 Zip 不能产生 1 个 SSCCE!制作一个足够短的示例以作为问题的编辑发布。

标签: java swing model-view-controller jcombobox comboboxmodel


【解决方案1】:

这可能会给你一个想法:

HashMap<Integer, Customer> stuff = new HashMap<Integer, Customer>();
stuff.put(0, new Customer());
stuff.put(2, new Customer());
Iterator it = stuff.keySet().iterator();
while(it.hasNext())
{
    ComboBox.addItem(stuff.get(it.next()));
}

您可以在您的应用程序中传递HashMap,然后将其中的内容添加到JComboBox 中,如上所述。

【讨论】:

  • HashMap 会以不可预知的顺序迭代,因此 ComboBox 中的条目总是随机混合的。我不知道这对您来说是否有问题,但最好使用 TreeMap(可以使用以排序方式迭代的整数键)或 LinkedHashMap(将按照添加键的顺序进行迭代)。
  • 谢谢。在这种情况下,我遇到的问题基本上是当项目遵循 MVC 设计时如何迭代哈希图。在您的示例中,您添加数据并在一个类中搜索所有数据。相反,我需要编写一个可以访问哈希图并返回可以进一步使用的数据的方法(可能是通过另一种方法),以便将所有返回的项目添加到相关的组合框中。所以,问题是,这两种方法看起来如何(如果这实际上是正确的方法)。
  • 就像我说的,你可以在你的程序中传递HashMap,或者(可能是个坏主意)创建一个所有类都可以访问的静态或公共的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多