如何使用ArrayList填充JComboBox?

Abd*_*liq 21 java swing arraylist jcombobox

我需要使用ArrayList填充JComboBox.有没有办法做到这一点?

eco*_*sis 22

使用toArray()ArrayList类的方法并将其传递给的构造函数JComboBox

有关详细信息,请参阅JavaDoc教程.

  • 如果您正在执行类似ArrayList <Person>的操作.在Person类中,您可以定义toString(),它将调整ComboBox的值.此外,在使用ArrayList.toArray()时,您可能必须将数组变量声明为Object [](而不是String []). (3认同)
  • 在教程中没有带有arraylist的示例 (2认同)

Iva*_*cki 18

数组列表填充组合框的优雅方法:

List<String> ls = new ArrayList<String>(); 
jComboBox.setModel(new DefaultComboBoxModel(ls.toArray()));
Run Code Online (Sandbox Code Playgroud)

  • 我没有尝试过这个,但似乎您最终会使用此方法用对象数组而不是字符串数组填充 jComboBox。 (2认同)
  • 是的 -1 表示非类型安全 (2认同)

sag*_*e88 11

我不喜欢接受的答案或@ fivetwentysix关于如何解决这个问题的评论.它有一种方法可以做到这一点,但没有给出使用toArray的完整解决方案.你需要使用toArray并给它一个参数,它是一个正确类型和大小的数组,这样你就不会得到一个Object数组.虽然对象数组可以工作,但我认为这不是强类型语言的最佳实践.

String[] array = arrayList.toArray(new String[arrayList.size()]);
JComboBox comboBox = new JComboBox(array);
Run Code Online (Sandbox Code Playgroud)

或者,您也可以通过使用for循环来保持强类型.

String[] array = new String[arrayList.size()];
for(int i = 0; i < array.length; i++) {
    array[i] = arrayList.get(i);
}
JComboBox comboBox = new JComboBox(array);
Run Code Online (Sandbox Code Playgroud)