![](/img/trans.png)
[英]TreeView scrolling jumps when using large graphic nodes (TornadoFX/JavaFX)
[英]TornadoFX/JavaFX treeview doesnt repopulate correctly after mutating multiple ObservableList
我有一个树视图(TornadoFX),其中填充了 3 个可观察列表。 如果我改变 3 个列表(首先清除它们而不是添加新内容),则树视图仅包含 Observable Lists 之一的内容。
treewiev 在第一个 List 有它的新内容而其他 2 个仍然是空的那一刻实现自己。 一旦其他 2 个列表获得新内容,它不会立即实现。
{//Classes
R extends X
A(val name :String) extends X
B(val name :String, val A :String) extends X
C(val B :String) extends X
}
{//this is how the Lists get their content each time
private val aList = observableListOf<A>()
private val bList = observableListOf<B>()
private val cList = observableListOf<C>()
fun setLists(){
a.clear()
b.clear()
c.clear()
//...
a.add(...)
b.add(...)
c.add(...)
}
}
{
treeview<X> {
root = TreeItem(R)
populate{ parent ->
if (parent == root){
aList
} else if (parent.value is A){
bList.filter { it.A == parent.value.name } //works always
}else if (parent.value is B){
cList.filter { it.B == parent.value.name } //works at first start but not after set setLists() get recalled
}else {
emptyList<X>() //not sure if this is really needed but the compiler needs something here
}
}
}
}
如果您愿意,请忽略此问题:Intelij 能够运行我的 TornadoFX 应用程序(从主应用程序或带有 TornadoFX 插件的应用程序),但是如果我尝试导出它,它不会运行(无论是 jar 还是 jnlp)。 即使我在 Artifact 菜单中选择 TornadoFX 和所有其他库。 但是:如果我在 JavaFX 选项卡中选择 Native Bundle -> image,则生成的 exe(并且只有 exe)正在运行。 我还尝试使用 com.github.johnrengelman.shadow 5.2.0 Plugin 创建一个 shadowJar,但这也不起作用。 那么如何将程序导出为 jar(最好是包含 TornadoFX 的 fatjar)?
好吧,我不知道这是否是完美的解决方案,但我只是清除孩子并再次填充树视图。 它有效,但如果这是预期的方式,它并不像我想象的那样“被动”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.