Описание проблемы
У меня есть древовидное представление (TornadoFX), которое заполняется тремя наблюдаемыми списками. Если я изменю 3 списка (сначала очистите их, чем добавлю новый контент), древовидная структура будет содержать только содержимое одного из наблюдаемых списков.
Интерпретация моей отладки
Древовидная диаграмма актуализируется в тот момент, когда в первом списке появляется новое содержимое, а два других остаются пустыми. Он не актуализируется, как только другие 2 списка получат новое содержание.
Что я пробовал до сих пор
- вызов treeview.root.children.clear (), прежде чем я изменю список, чтобы очистить дерево (тот же результат)
- вызов treeview.refresh () после того, как все списки были установлены (тот же результат)
Мой (более-менее псевдокод)
{//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). Даже если я выберу TornadoFX и все другие библиотеки в меню Artifact. НО: если я выберу Native Bundle -> изображение на вкладке JavaFX, полученный exe (и только exe) будет работать. Я также попытался создать shadowJar с помощью плагина com.github.johnrengelman.shadow 5.2.0, но это тоже не сработало. Итак, как я могу экспортировать программу в виде jar-файла (в лучшем случае - fatjar, включая TornadoFX)?