首页 文章

在javafx-2.2中的TableView中设置可编辑的整数列

提问于
浏览
2

我是javafx的新手,我试图创建可编辑的整数列 .

我读过http://docs.oracle.com/javafx/2/api/http://docs.oracle.com/javafx/2/ui_controls/table-view.htm,但仍然有一个关于使用整数属性的大问题 .

我创建了一个包含IntegerProperty的模型 . IntegerProperty是ObservableValue [Number]的后代 . TableColumn对字段类型是不变的,因此我被迫将此列键入TableColumn [MyModel,Number] . 比我需要创建允许编辑整数单元格的cellFactory . TextFieldTableCell(IntegerStringConverter)应该实现这个目标,但是IntegerStringConverter被输入为StringConverter [Integer]而不是StringConverter [Number],而TextFieldTableCell也是值类型的不变量 .

所以我得到了冲突:

  • IntegerProperty需要Number类型

  • StringConverter提供Integer类型

  • TableColumn是不变的,需要两种类型匹配

TableColumn应该如何使用这些限制?

2 回答

  • 0

    我记得曾经使用javafx.beans.property.adapter.JavaBeanIntegerPropertyBuilder构建一个javafx.beans.property.adapter.JavaBeanIntegerProperty,我必须做类似的事情 .

    我建议你使用这个适配器类而不是IntegerProperty . 我现在有点紧张,但我会尽快实现并尽快编辑这个答案 .

  • 0

    我认为在Scala 2.10上使用ScalaFX 1.0.0.M2时遇到了类似的问题 . 我一直在使用:

    private val portColumn = new TableColumn[Model, Int] {
        text = "Port"
        cellValueFactory = {
          _.value.port
        }
      }
    

    为了解决这个问题,我将其改为:

    private val portColumn = new TableColumn[Model, Number] {
        text = "Port"
        cellValueFactory = {
          _.value.port.delegate
        }
      }
    

    另外,和 very important ,我不得不为Scala 2.10升级到ScalaFX 1.0.0.M4 .

    我没有让单元格可编辑,所以我会尝试一下,让你知道它是怎么回事 .

相关问题