EDIT (NEW):Populate выпадающий с таблицей значений
До сих пор не выяснили, как заполнить cboxCustomers
. Я был на нем в течение дня или двух, но без везения.
В случае, если кто может помочь: http://pastebin.com/e5wibRYw
Я пошел от cats
к customers
, кстати.
Я пробовал Mr. Xymon's
подход, но не реализовал его правильно, так как он не работал.
Независимо от того, какое событие я использовал для обработки населения, я всегда получал NullPointerException
для любого контроля/события, которое я пытался использовать.
OLD:
Там в
JForm
. На нем есть один комбинированный блок. Также есть один стол с кошками -
cats
. Каждый кот имеет
id
и
catName
.
То, что я хотел сделать, когда я нажимаю на поле со списком, тем самым расширяя его, заполнить его со всеми id
кошек, которые находятся в cats
таблице.
СЛОВАРЬ. Asnwer ниже. К сожалению, я получаю многочисленные 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);
}
OLD ОТВЕТ:
Я думаю, что я установил его. Мне просто пришлось обернуть все выделенные строки кода вместе в один большой оператор try-catch
, который поймал бы SQLException
. Проблема в том, что поле со списком не заполняется значениями id
, когда я его расширяю. Почему это? Я использую неправильное событие?
Опубликовать полный текст исключения пожалуйста. Также вы захотите выполнить любые запросы базы данных в фоновом потоке, таком как объект SwingWorker. –
Что касается вашего редактирования: снова вам нужно выполнить все запросы базы данных в фоновом потоке. Почему вы пытаетесь заполнить combobox на mouseClick, поскольку это не имеет никакого смысла. Потребуется время, чтобы запросить базу данных, и это, вероятно, будет бесполезно с возможностью Swing открыть поле со списком. Почему бы не заполнить поле со списком заранее? –
Да. Это имеет больше смысла. Благодарю. – Bob