我有一个简单的JavaFX表,其中包含如下列:
@FXML
private TableColumn<PropertyModel, String> columnPropertyProdValue;
在初始化方法中,我使用了这个
columnPropertyProdValue.setCellFactory(TextFieldTableCell.forTableColumn());
为了在此列上的双击事件中获取textarea。这很好。
列应存储不同的属性值,但数据类型取决于表中的其他列。第一列“datatype”定义数据类型,如boolean,string或integer,属性列应存储其值。但目前它总是一个字符串。
如果我将属性值作为String存储在数据库中但应用程序应该在运行时检查数据类型的正确性,那对我来说很好。
有没有人知道如何实现这个目标?
非常感谢 Hauke
答案 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;
}
}