【问题标题】:ResultSet in JComboboxJCombobox 中的结果集
【发布时间】:2013-10-05 14:49:25
【问题描述】:

我想用 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++;
      }

【问题讨论】:

  • 你从哪里得到 NullPointerException?
  • @AndrewWilkinson 我真的很抱歉! ArrayIndexOufOfBounds 是错误。我的错!

标签: java sql swing jcombobox resultset


【解决方案1】:

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

comboBox.addItem(...);

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

【讨论】:

  • +1 来自我指出JComboBox 的正确用法,我的回答只专注于解决异常。
【解决方案2】:

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

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

编辑

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

【讨论】:

  • 以太直接将数据添加到组合框或将数据添加到向量。创建 ArrayList 是一个不必要的步骤。
  • @Lambros,您也可以考虑 camickr 的回答或我的 eidt。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多