TornadoFX散点图更新

时间:2019-02-21 21:48:00

标签: kotlin tornadofx

我有一个散点图,其中包含一些要点。我想在按下按钮时更新点的位置。我有以下代码:

class Point(var x: Int, var y: Int)

class TestView : View("TestView") {

val points = listOf(Point(0,1),Point(1,1)).observable()

override val root = borderpane {
    center {
        scatterchart("test", NumberAxis(), NumberAxis()) {
            series("Group 1") {
                points.forEach{
                    data(it.x, it.y)
                }
            }
        }
    }

    bottom {
        button("Button") {
            action {
                points[0].x = 5
            }
        }
    }
}
}

当我按下按钮时,什么也没发生。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

在遍历data(it.x, it.y)列表的同时执行points时,实际上是在向图表添加数据。在事实发生之后更改您迭代过的列表不会对您之前添加的数据点产生任何影响。

每个Series都有一个名为ObservableList<XYChart.Data<Number, Number>>的{​​{1}},用于存储图表系列的实际数据。如果要在这些数据点更改时自动更新图表,则可以绑定到系列的data,或者可以直接操作dataProperty列表以达到相同的效果,而无需添加绑定/侦听器