[英]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.