簡體   English   中英

JavaFX可編輯的TableCell for Double屬性

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM