Javafx 在树视图中预选项目

Javafx 在树视图中预选项目,javafx,treeview,tornadofx,Javafx,Treeview,Tornadofx,我正在实现一个类别映射器。有两个树视图。两者都包含来自不同来源的类别。(即使它们看起来像来自同一个来源) 用户应该能够将一个类别从左侧映射到右侧树视图的多个类别。这将存储在配置文件中 但是,当视图最初加载并且用户单击左侧的类别时,我想预选右侧的映射类别,从配置文件加载 我看到我可以用一个选项来做这件事,但是我没有看到一个选项可以用多个选项来做这件事 我怎样才能做到这一点 我仔细阅读了你的要点,似乎问题出在绑定选择上,对吗?我做了一些轻微的挖掘,发现绑定可观察列表并不容易。我甚至没有看到一个解决

我正在实现一个类别映射器。有两个树视图。两者都包含来自不同来源的类别。(即使它们看起来像来自同一个来源)

用户应该能够将一个类别从左侧映射到右侧树视图的多个类别。这将存储在配置文件中

但是,当视图最初加载并且用户单击左侧的类别时,我想预选右侧的映射类别,从配置文件加载

我看到我可以用一个选项来做这件事,但是我没有看到一个选项可以用多个选项来做这件事

我怎样才能做到这一点


我仔细阅读了你的要点,似乎问题出在绑定选择上,对吗?我做了一些轻微的挖掘,发现绑定可观察列表并不容易。我甚至没有看到一个解决方案,它不仅仅是添加侦听器来模拟绑定。然而,将该列表包装在
SimpleListProperty
中似乎起到了作用。下面是一个演示:

class TestView : View() {
    // This mocks your target list in the ViewModel
    val targetList = SimpleListProperty(listOf<String>().asObservable())

    override val root = vbox(10) {
        // Both table views and tree views use an Observable Selection list
        listview(listOf("asefas", "asefasef", "asefasefasefase").asObservable()) {
            // Wrap in SimpleListProperty, then bind
            targetList.bind(SimpleListProperty(selectionModel.selectedItems))
            selectionModel.selectionMode = SelectionMode.MULTIPLE
        }

        setPrefSize(300.0, 300.0)
    }

    init {
        // Target list now reflects changes made to selection model
        targetList.addListener { _, _, change ->
            println("Selections changed to: $change")
        }
    }
}
类TestView:View(){
//这将模拟ViewModel中的目标列表
val targetList=SimpleListProperty(listOf().asObservable())
覆盖val root=vbox(10){
//表视图和树视图都使用可观察的选择列表
listview(listOf(“asefas”、“asefasef”、“asefasefasefase”).asObservable()){
//用SimpleListProperty包装,然后绑定
targetList.bind(SimpleListProperty(selectionModel.selectedItems))
selectionModel.selectionMode=selectionMode.MULTIPLE
}
setPrefSize(300.0300.0)
}
初始化{
//目标列表现在反映对选择模型所做的更改
targetList.addListener{{{{,},更改->
println(“选择更改为:$change”)
}
}
}

请参见Multiple/SelectionModel-f.i.
SelectionModel的api文档。select
添加所选项目,也有其他方法进行多选。当遇到困难时,请拿出一个能证明什么东西没有达到预期效果的例子来看看Gistn上的例子没有什么意想不到的效果,我不知道如何做到这一点?这就是为什么我要重复:阅读api文档,寻找添加选择的方法。。和/或阅读有关如何使用fx控件的基本教程(包括其管理类,如SelectionModel。当我们在新领域还不擅长时,我们会这样做,不是吗;)并且请不要链接到外部代码。。