В следующем коде TornadoFX / Kotlin
import javafx.scene.control.TreeItem
import javafx.scene.control.TreeView
import tornadofx.*
class MyObj {
var type : Int = 0
constructor(type : Int) {
this.type = type
}
}
class MainView: View("Minimal TV demo") {
var treeRoot : TreeItem<MyObj> = TreeItem()
var objectsTreeView : TreeView<MyObj>? = null
override val root = vbox {
objectsTreeView = treeview(treeRoot) {
showRootProperty().value = false
cellFormat {
if(it.type == 0) {
text = "Test"
graphic = null
}
else {
text = null
graphic = vbox {
label("Label 1")
button("123")
textarea {
prefWidth = 100.0
prefHeight = 125.0
}
}
}
}
}
}
init {
with (root) {
for(i in 1..10) {
val x = TreeItem(MyObj(0))
treeRoot.children.add(x)
x.children.add(TreeItem(MyObj(1)))
}
}
}
}
при открытии нескольких элементов дерева и прокрутке представления дерева содержимое представления дерева и ползунок, кажется, действуют довольно «нервно», то есть когда ясдвиньте ползунок вниз, мышь перемещается, но ползунок и содержимое остаются на своем месте, пока мышь не опустится так далеко, а затем содержимое перепрыгнет. Это просто не ощущается и не выглядит хорошо.
Я думаю, что я мог бы обойти это, добавив отдельные TreeItem
для каждой строки элемента пользовательского интерфейса, но есть ли способ добиться плавной прокрутки без этого? Я пытался подать в суд на фиксированную высоту ячейки, что, кажется, работает, но, конечно, это не совсем правильно, учитывая, что некоторые строки короче других.