【问题标题】:Populate JComboBox from List [closed]从列表中填充 JComboBox [关闭]
【发布时间】:2015-05-27 06:12:39
【问题描述】:

我正在尝试从列表中填充JComboBox,但我得到的组合为空。

代码有什么问题?

 List<Rank> rank = GetRanks();
 Vector model = new Vector();

 for (Rank s : rank) {
     model.addElement(new Rank(s.getRankId(), s.getRankName()));
 }
 jComboBox1 = new JComboBox(model);

【问题讨论】:

  • 请重命名为getRanks,还有你为什么用Vector而不是ArrayList?你正在从现有的Rank 构建一个新的Rank,这对我来说有点奇怪。
  • 考虑提供一个runnable example 来证明您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将减少混乱并获得更好的响应
  • 试试看!this

标签: java arrays swing jcombobox


【解决方案1】:

这样的事情有什么问题

DefaultComboBoxModel<Rank> model = new DefaultComboBoxModel<>();
for (Rank r : rank) {
    model.addElement(r);
}
jComboBox1 = new JComboBox(model);

DefaultComboBoxModel<Rank> model = new DefaultComboBoxModel<>(rank.toArray(new Rank[rank.size()]);
jComboBox1 = new JComboBox(model);

不要忘记确保将jComboBox1 添加到可显示的内容中

【讨论】:

  • 还是不行。我尝试了 (Rank s : rank) { jComboBox1.addItem(s.getRankName());和工作,但我想在组合中添加标签和值
  • 考虑提供一个runnable example 来证明您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将减少混乱并获得更好的响应
【解决方案2】:

一目了然,您的代码没有任何问题,因此:

  1. 要么列表为空
  2. 您的 Rank 对象有问题
  3. 您没有将新组合框添加到页面上

我认为 3 可能是最有可能的,因为您正在创建一个新的然后不对其进行任何操作。您可能想更改旧项目中的项目,而不是创建新项目。

尝试在调试器中运行您的程序,并单步执行您的代码,查看它在每个步骤中所做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2019-08-14
    • 2014-10-02
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多