Как установить текст в поле выбора 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, вам может потребоваться установить на него конвертер.

В вашем вопросе слишком много неизвестных, чтобы дать более конкретный ответ.

Другие вопросы по тегам