JavaFX - Как проверить пользовательский ввод в редактируемом TableView - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу проверить, что пользователь ввел целое число, если введена строка или поле не заполнено, я хочу отобразить ошибку.

В настоящее время я получаю NumberFormatException при вводе строки в консоли, но не могу понять, куда добавить уловку попытки.

Это пример одного из моих столбцов, остальные придерживаются того же стиля:

regularityColumn.setMinWidth(130);
      regularityColumn.setCellValueFactory(new PropertyValueFactory<>
              ("taskTypeRegularity"));
table.getColumns().addAll(....., regularityColumn);

Если пользователь менеджера найден, таблица устанавливается в редактируемое, а также:

regularityColumn.setCellFactory(TextFieldTableCell.forTableColumn(
                new IntegerStringConverter()));
    regularityColumn.setOnEditCommit(e -> {
        TaskType selectedTask = table.getSelectionModel()
                    .getSelectedItem();
        selectedTask.setTaskTypeRegularityInt(e.getNewValue());
});

1 Ответ

0 голосов
/ 28 апреля 2018

Создайте свой собственный StringConverter. Исключение исходит от IntegerStringConverter.

Так замените это ...

regularityColumn.setCellFactory(TextFieldTableCell.forTableColumn(
            new IntegerStringConverter()));

с чем-то вроде этого ...

regularityColumn.setCellFactory(TextFieldTableCell.forTableColumn(
            new StringConverter<Integer>(){
            Integer fromString(String s) {
                 //convert the string to integer yourself and catch the exception
            }

            String toString(Integer i) {
                 //convert the integer to String yourself and catch the exception
            }
        }
    )
);

Обратите внимание, что я набрал код без IDE, поэтому извините за любые опечатки. Если вы будете использовать это в нескольких местах, то превратите его в свой собственный класс, который можно использовать повторно, например, MyIntegerStringConverter.

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