使用 tornadofx 处理列表视图双击
handle listview double click with tornadofx
我想处理对 tornadofx 列表视图的双击,但出现异常:
java.lang.NoClassDefFoundError: com/sun/javafx/scene/control/skin/TableColumnHeader
at tornadofx.NodesKt.isInsideRow(Nodes.kt:492)
[...]
在下面的代码中,如果我使用 onDoubleClick
它可以工作,但我希望能够使用 onUserSelect
或者至少理解为什么这不起作用。
package com.example.demo.app
import tornadofx.*
class MainView : View("listview demo") {
val things = SortedFilteredList<String>()
init {
things.add("aaa")
things.add("bbb")
}
override val root = listview(things) {
onUserSelect {
println("user select")
}
/*
onDoubleClick {
println("double click")
}
*/
}
}
class MyApp: App(MainView::class)
运行 ubuntu 18.04.3。使用 gradle 5.6.3、kotlin 1.3.50、tornadofx 1.7.19 构建。 gradle javafxplugin 正在获取默认的 javafx,但我也尝试明确指定版本 11-13 并获得相同的行为。我还尝试安装 ubuntu openjfx 包版本 11.0.2+1-1~18.04.2.
听起来您正在尝试 运行 TornadoFX 1 JDK/JavaFX 比 8 更新。请将 Java/JavaFX 降级到 8,或者 运行 使用 TornadoFX 2.0。 0-SNAPSHOT,可从 oss.sonatype.org 获得。此版本支持Java/JavaFX13.
我想处理对 tornadofx 列表视图的双击,但出现异常:
java.lang.NoClassDefFoundError: com/sun/javafx/scene/control/skin/TableColumnHeader
at tornadofx.NodesKt.isInsideRow(Nodes.kt:492)
[...]
在下面的代码中,如果我使用 onDoubleClick
它可以工作,但我希望能够使用 onUserSelect
或者至少理解为什么这不起作用。
package com.example.demo.app
import tornadofx.*
class MainView : View("listview demo") {
val things = SortedFilteredList<String>()
init {
things.add("aaa")
things.add("bbb")
}
override val root = listview(things) {
onUserSelect {
println("user select")
}
/*
onDoubleClick {
println("double click")
}
*/
}
}
class MyApp: App(MainView::class)
运行 ubuntu 18.04.3。使用 gradle 5.6.3、kotlin 1.3.50、tornadofx 1.7.19 构建。 gradle javafxplugin 正在获取默认的 javafx,但我也尝试明确指定版本 11-13 并获得相同的行为。我还尝试安装 ubuntu openjfx 包版本 11.0.2+1-1~18.04.2.
听起来您正在尝试 运行 TornadoFX 1 JDK/JavaFX 比 8 更新。请将 Java/JavaFX 降级到 8,或者 运行 使用 TornadoFX 2.0。 0-SNAPSHOT,可从 oss.sonatype.org 获得。此版本支持Java/JavaFX13.