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

时间:2012-10-07 01:30:48

标签: javafx-2 javafx

我是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需要数字类型
  • StringConverter提供整数类型
  • TableColumn是不变的,需要两种类型匹配

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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
    }
  }

此外,非常重要,我不得不升级到Scala 2.1X的ScalaFX 1.0.0。 M4

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