[英]JavaFX editable TableCell for Double property
如何为TableCell设置转换器以能够编辑Double属性?
<TableColumn fx:id="priceCol" text="Price">
<cellValueFactory>
<PropertyValueFactory property="price" />
</cellValueFactory>
<cellFactory>
<TextFieldTableCell fx:factory="forTableColumn">
<converter>
// ???
</converter>
</TextFieldTableCell>
</cellFactory>
</TableColumn>
在哪里可以找到有关如何使用FXML设置此类文档的文档? 到目前为止,这看起来确实令人困惑。
据我所知,在FXML中无法做到这一点。
您为TableColumn
提供的cellFactory
是一个工厂:其类型为Callback<TableColumn<?,?>,TableCell<?,?>>
。 FXMLLoader
根据元素<TextFieldTableCell fx:factory="forTableColumn">
创建的静态工厂方法TextFieldTableCell.forTableColumn()
的调用返回的对象是这种类型的。
您提供的FXML代码尝试在TextFieldTableCell.forTableColumn()
返回的对象上调用setConverter(...)
,当然, Callback
不会定义setConverter(...)
方法,因此无论您作为子对象包含什么<converter>
标记将不起作用。
据我所知,FXML中没有办法为通过fx:factory
(我认为您想要的)调用的工厂方法提供参数,因此我认为您必须在控制器中执行此操作。
当然,后者非常容易。 做就是了
<TableColumn fx:id="priceCol" text="Price">
<cellValueFactory>
<PropertyValueFactory property="price" />
</cellValueFactory>
</TableColumn>
在FXML和您的控制器中
public void initialize() {
priceCol.setCellFactory(TextFieldTableCell.forTableColumn(new DoubleStringConverter()));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.