带有Typefilter

时间:2016-04-16 12:45:26

标签: javafx

我有一个简单的JavaFX表,其中包含如下列:

@FXML
private TableColumn<PropertyModel, String> columnPropertyProdValue;

在初始化方法中,我使用了这个

columnPropertyProdValue.setCellFactory(TextFieldTableCell.forTableColumn());

为了在此列上的双击事件中获取textarea。这很好。

列应存储不同的属性值,但数据类型取决于表中的其他列。第一列“datatype”定义数据类型,如boolean,string或integer,属性列应存储其值。但目前它总是一个字符串。

如果我将属性值作为String存储在数据库中但应用程序应该在运行时检查数据类型的正确性,那对我来说很好。

有没有人知道如何实现这个目标?

非常感谢 Hauke

1 个答案:

答案 0 :(得分:0)

对于TextInputControl和子类,您可以应用TextFormatter。此类允许您控制输入。例如(对于浮点数):

setTextFormatter(new TextFormatter<String>(
            s -> {
                if (s.getControlNewText().isEmpty())
                    return s;
                try{
                    Float.parseFloat(s.getControlNewText());
                    return s;
                } catch (NumberFormatException e) {
                    return null;
                }
            }