TornadoFX 散点图更新
TornadoFX scatterchart updating
我有一个散点图,里面有一些点。我想在按下按钮时更新点的位置。我有以下代码:
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
}
}
}
}
}
当我按下按钮时,没有任何反应。我做错了什么?
当您在遍历 points
列表时执行 data(it.x, it.y)
,实际上是在向图表中添加数据。事后更改您迭代的列表不会对您之前添加的数据点产生任何影响。
每个 Series
都有一个名为 data
的 ObservableList<XYChart.Data<Number, Number>>
,其中存储了图表系列的实际数据。如果你想随着这些数据点的变化自动更新图表,你可以绑定到一个系列的 dataProperty
,或者你可以直接操作 data
列表以获得相同的效果而不添加 binding/listeners.
我有一个散点图,里面有一些点。我想在按下按钮时更新点的位置。我有以下代码:
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
}
}
}
}
}
当我按下按钮时,没有任何反应。我做错了什么?
当您在遍历 points
列表时执行 data(it.x, it.y)
,实际上是在向图表中添加数据。事后更改您迭代的列表不会对您之前添加的数据点产生任何影响。
每个 Series
都有一个名为 data
的 ObservableList<XYChart.Data<Number, Number>>
,其中存储了图表系列的实际数据。如果你想随着这些数据点的变化自动更新图表,你可以绑定到一个系列的 dataProperty
,或者你可以直接操作 data
列表以获得相同的效果而不添加 binding/listeners.