Как установить текст в поле выбора JavaFX на основе выбранной строки в таблице
Я занимаюсь разработкой системы тикетов с использованием JavaFx. Когда пользователь выбирает конкретную заявку в таблице и нажимает кнопку "Редактировать", данные в выбранной строке загружаются в соответствующие поля в форме ниже. Затем пользователь может вносить изменения и обновлять информацию.
Однако у меня возникают проблемы с выяснением того, как установить текст в полях выбора для "Статус" и "Серьезность" для текста в выбранной строке. Вот код, который у меня есть для кнопки редактирования:
@FXML
private void editButtonFired(ActionEvent event) {
try {
int value = table.getSelectionModel().getSelectedItem().getTicketNum();
JdbcRowSet rowset = RowSetProvider.newFactory().createJdbcRowSet();
rowset.setUrl(url);
rowset.setUsername(username);
rowset.setPassword(password);
rowset.setCommand("SELECT * FROM s_fuse_ticket_table WHERE ticket_id = ?");
rowset.setInt(1, value);
rowset.execute();
while(rowset.next()) {
ticketNumber.setText(rowset.getString(1));
summary.setText(rowset.getString(2));
}
}catch (SQLException e){
}
}
Я пытался использовать метод.setSelectionModel(), но это не сработало. Может ли кто-нибудь помочь мне? Спасибо!
1 ответ
Вызов choiceBox.setValue()
установить значение поля выбора:
import javafx.scene.control.ChoiceBox;
ChoiceBox cb = new ChoiceBox();
cb.getItems().addAll("item1", "item2", "item3");
cb.setValue("item2");
Ответы на дополнительные вопросы
Так что я уже установил значения для поля выбора в fxml
Возможно нет. Вероятно, вы установили элементы, а не значение (что хорошо). Для вашего случая использования вы не можете установить значение в FXML, потому что это значение неизвестно, пока пользователь не выберет соответствующую позицию в вашей основной таблице.
Когда я пытаюсь использовать метод setValue () для установки значения, извлеченного из таблицы, я получаю сообщение об ошибке: несовместимые типы:
String cannot be converted to CAP#1 where CAP#1 is a fresh type-variable: CAP#1 extends Object from capture of
Я никогда не сталкивался с таким сообщением об ошибке раньше. Что бы это ни стоило, здесь есть некоторая информация: несовместимые типы и свежие переменные типов, хотя, признаюсь, я не вижу прямой связи с вашей ситуацией. Я предполагаю, что вы не определяете тип элементов для ChoiceBox или определяете их как что-то отличное от String. Вы можете установить тип явно используя:
ChoiceBox<String> cb = new ChoiceBox<>();
Поскольку вы используете FXML, определение choicebox не будет использовать ключевое слово new и будет похоже на приведенное ниже:
@FXML
ChoiceBox<String> cb;
Если тип вашего ChoiceBox отличается от типа String, вам может потребоваться установить на него конвертер.
В вашем вопросе слишком много неизвестных, чтобы дать более конкретный ответ.