JavaFX - 如何在可编辑的TableView中检查用户输入

时间:2018-04-28 12:09:50

标签: java javafx

我想检查用户是否输入了整数,如果输入了字符串或字段为空,我想显示错误。

我在控制台中输入字符串时遇到NumberFormatException,但无法确定在哪里添加try catch。

这是我的一个列的示例,其他列遵循相同的样式:

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 :(得分:1)

创建自己的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