Я использую jComboBox
для выбора поставщика из таблицы, поэтому я создал строку id
-1 в таблице для "ни одного" выбранного поставщика.
-1 строка также отображается для пользователя, где я получил все записи в jTable
.
Я не хочу, чтобы пользователь мог удалить эту строку случайно или сознательно.
Так можно мне что-то подобное?
Я использую MySQL и Java.
String comName = (String) jSupplrsComboBox.getSelectedItem();
Suppliers suppliers = manager.searchSuppCompny(comName);
if (comName.equals("none")) {
receivings.getSuppliers().setId(-1);
receivings.setSuppliers(suppliers);
}
receivings.setSuppliers(suppliers);
Получил Suppliers
в jComboBox
и просто вручную добавил текст "нет", чтобы он не совпадал с таблицей Suppliers
.
Ну, я попробовал себя, и где я беру записи, я изменил код:
DefaultTableModel suppliersModel = (DefaultTableModel) jSuppliersTable.getModel();
for(Suppliers suppliers : manager.allSuppliers()) {
suppliersModel.addRow(new Object[]{suppliers.getId()});
int id = (Integer) suppliersModel.getValueAt(0, 0);
if(id == -1) {
suppliersModel.removeRow(0);
}
Это извлекает записи после первой строки с id
-1 в таблице базы данных.
Tahnks.
Я не уверен, чего именно вы пытаетесь достичь, но если вы используете JComboBox
, я полагаю, что вы фильтруете свою базу данных по поставщику, указанному выбором comboBox. Это также означает, что ваша модель comboBox должна быть заполнена записями, которые существуют в вашей базе данных.
Это быстрый способ установить строки в ComboBox из Enum, передача записей из базы данных должна работать аналогичным образом, но, возможно, необходимо устранить дублирование.
jSupplrsComboBox.setModel(new DefaultComboBoxModel<>(SupplierId.values()));
По ссылке Java - флажки в JComboBox, ответ Джонатана Фейнберга мог бы лучше подходить для более чем одного фильтра.
Что касается MYSQL, я предполагаю, что у вас есть доступ для внесения изменений, может быть лучше, если вы добавите дополнительное поле, скажем, isValid, чтобы указать, является ли указанная запись действительной или нет. В этом случае вы можете отфильтровать jSupplrsComboBox.getSelectedItem()
с дополнительным WHERE isValid = 1
. Но ваш вопрос был больше ориентирован на Java, чем на MYSQL, поэтому я не буду об этом больше говорить. Проверьте MySQL Boolean Question и связанные ссылки для получения дополнительной информации об этом.