繁体   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