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 应该如何与此限制一起使用?

4

2 回答 2

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
    }
  }

此外,非常重要的是,我必须升级到 ScalaFX 1.0.0。用于 Scala 2.10 的M4 。

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

于 2013-06-15T05:09:20.123 回答
0

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

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

于 2012-10-08T14:55:25.510 回答