javaFxTableView可编辑表格,当我添加一个TextFieldTableCell至TableColumn的CellFactory中后,在编辑数据时后台报错

1、TableView可编辑表格,当我添加一个TextFieldTableCellTableColumnCellFactory中后,在编辑数据时后台报错

此问题后台报错信息:Exception in thread "JavaFX Application Thread"java.lang.IllegalStateException: Attempting to convert text input into Object, but provided StringConverter is null. Be sure to set a StringConverter in your cell factory.

 

源代码为

wfidCol.setCellFactory(

         new Callback<TableColumn<Wfinfo,Integer>, TableCell<Wfinfo, Integer>>() {

           public TableCell<Wfinfo,Integer> call(TableColumn<Wfinfo, Integer>param) {

                   TextFieldTableCell<Wfinfo,Integer>cell= newTextFieldTableCell<>();

                   return cell;

            }

      });

我总是在纠结为什么会报没有StringConverter,查找API发现,TextFieldTableCell,创建时构造方法中默认不设置StringConverter,所以应该对cell设置Integer对应的IntegerStringConverter,API说明如下:


修改后源代码如下:

wfidCol.setCellFactory(

         newCallback<TableColumn<Wfinfo, Integer>, TableCell<Wfinfo,Integer>>() {

           public TableCell<Wfinfo,Integer> call(TableColumn<Wfinfo, Integer>param) {

                   TextFieldTableCell<Wfinfo, Integer>cell = new TextFieldTableCell<>(newIntegerStringConverter());

                    return cell ;

            }

      });

同理,不同数据类型有不同的StringConverter对象,具体可参照API

  • java.lang.Object
    • javafx.util.StringConverter<T>
  • Direct Known Subclasses:

BigDecimalStringConverter,BigIntegerStringConverter,BooleanStringConverter,ByteStringConverter,CharacterStringConverter,DateTimeStringConverter,DefaultStringConverter,DoubleStringConverter,FloatStringConverter,FormatStringConverter,IntegerStringConverter,LongStringConverter,NumberAxis.DefaultFormatter,NumberStringConverter,ShortStringConverter

 

而如果使用TextFieldTableCell来编辑String类型数据,则只需要如下设置即可:

remarkinfoCol.setCellFactory(TextFieldTableCell.<Wfinfo>forTableColumn());

也可以直接使用forTableColumn方法,但仍需要传送转换器IntegerStringConverter:

wfidCol.setCellFactory(TextFieldTableCell.forTableColumn(new IntegerStringConverter()));


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
小程序是一种轻量级的应用程序,可以在手机上运行。在小程序中,一个可以增加和删除行的table并可编辑表格中的内容,可以通过以下步骤实现。 首先,需要在小程序中引入表格组件,例如使用`<table>`标签或其他支持表格功能的组件。然后,可以通过编写代码来实现表格的增加和删除行功能。 对于增加行功能,可以在页面中添加一个按钮,当用户点击该按钮,触发相应的事件。在事件处理函数中,可以通过调用相应的方法来增加一行表格数据。例如,可以使用`push()`方法将一个新的行数据对象添加到表格数据数组中,然后更新页面中的表格显示。 对于删除行功能,可以为每一行添加一个删除按钮,当用户点击该按钮,触发相应的事件。在事件处理函数中,可以通过获取点击的行索引,并使用`splice()`方法将该行从表格数据数组中删除,然后更新页面中的表格显示。 另外,为了实现可编辑表格中的内容,可以在每个单元格添加输入框或其他可编辑组件。当用户编辑单元格,可以通过监听相应的事件,将编辑的内容更新到对应的表格数据对象中。 通过以上步骤,一个可以增加和删除行的table并可编辑表格中内容的功能就可以在小程序中实现了。这样用户可以自由地增加、删除和编辑表格中的数据,提高了表格的灵活性和可用性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值