Заполните поле со списком значениями таблицы - PullRequest
0 голосов
/ 03 апреля 2012

РЕДАКТИРОВАТЬ (НОВОЕ):

Все еще не выяснили, как заполнить cboxCustomers.Я занимался этим последние два дня, но без удачи.

На случай, если кто-то может помочь: http://pastebin.com/e5wibRYw

Я перешел с cats на customers, кстати,

Я пробовал Mr. Xymon's подход, но не реализовал его правильно, поскольку он не работал.

Какое бы событие я ни использовал для обработки населения, я всегда получал NullPointerException для любого контроля/ событие, которое я пытался использовать.

СТАРЫЙ:

Там есть JForm.На нем есть одно поле со списком.Также есть один стол с кошками - cats.У каждой кошки есть id и catName.

То, что я хотел сделать, - это когда я щелкаю поле со списком, расширяя его, заполняя его всеми id кошками, которые находятся в таблице cats.

SLOVED.Ответ ниже. К сожалению, я получаю многочисленные unreported exception java.sql.SQLException из строк, которые я указал >:

private void cboxCatsMouseClicked(java.awt.event.MouseEvent evt) {
        // TODO add your handling code here:
        // create an array list to be filled with cat's ids
        ArrayList<String> cats = new ArrayList<String>();
        String query = "SELECT id FROM cats ORDER BY id";
        >java.sql.PreparedStatement stm = connection.prepareStatement(query);

        >ResultSet rs = stm.executeQuery(query);

        >while(rs.next()){
            >String cat = rs.getString("id");
            // add cat's ids tp the array list
            cats.add(cat);
        }

        >rs.close();

        // populate the combo box
        DefaultComboBoxModel model = new DefaultComboBoxModel(cats.toArray());
        cboxCats.setModel(model);
    }

СТАРЫЙ ОТВЕТ:

Iкажется, я это исправил.Мне просто нужно было обернуть все выделенные строки кода в один большой оператор try-catch, который поймал бы SQLException.Проблема в том, что поле со списком не заполняется значениями id, когда я его раскрываю.Это почему?Я использую неправильное событие?

1 Ответ

2 голосов
/ 03 апреля 2012

Не лучше ли заполнить поле со списком именем кошки вместо идентификатора? Я придумал другое решение, напрямую добавив значение поля в модель вместо использования ArrayList. Вы должны выполнить это в конструкторе, чтобы заполнить поле со списком при загрузке формы.

DefaultComboBoxModel list = new DefaultComboBoxModel();
JComboBox cbo_cats = new JComboBox(list);


// at constructor or a user-defined method that's called from constructor
   try{     
      // assume that all objects were all properly defined
      s = con.createStatement();
      s.executeQuery("SELECT * FROM cats ORDER BY catName");
      rs = s.getResultSet();
      while(rs.next()){
         //int id = rs.getInt("id");
         //list.addElement(id);

         String c = rs.getString("catName");
         list.addElement(c);
      }
   }catch(Exception err){
      System.out.println(err);
   }

Как видите, я не использовал подготовленные утверждения, но вы можете легко это изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...