0

我想用 sql 结果填充一个 Jcombobox,但为什么我在这里得到一个 ArrayIndexOufOfBounds?JCombobox 是这样的:countrybox = new JComboBox(countries);

    int x = 0;
    String query = "SELECT UNIQUE country FROM criminals ORDER BY country ASC";
    System.out.println(query);
    Statement stmt = connection.createStatement();
    ResultSet rset = stmt.executeQuery(query);

    while (rset.next()) {
        countries[x] = rset.getString(1);
        x++;
      }
4

2 回答 2

4

无需临时存储。您可以不使用 ArrayList 将项目直接加载到组合框中:

comboBox.addItem(...);

或者使用 Vector 而不是 ArrayList,因为 DefaultListModel 使用 Vector 来保存数据。

于 2013-10-05T15:14:40.333 回答
1

显然,结果集的元素多于数组countries。您应该使用动态增长的ArrayList 。

如果您在填充后绝对需要一个数组,那么您可以使用它的方法toArrayArrayList从中获取它。

编辑

正如@camickr 所建议的,JComboBox有一个以Vector作为参数的构造函数。就像 ArrayList 一样,Verctor 也可以自动增长。因此,您可以使用它而不是使用数组的那个。更好的是,使用方法addItem将元素直接添加到组合框。

于 2013-10-05T14:55:40.590 回答