【问题标题】:handle listview double click with tornadofx用 tornadofx 处理 listview 双击
【发布时间】:2019-10-31 14:36:46
【问题描述】:

我想处理对 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。

【问题讨论】:

    标签: kotlin tornadofx


    【解决方案1】:

    听起来您正在尝试使用更新于 8 的 JDK/JavaFX 运行 TornadoFX 1。请将 Java/JavaFX 降级到 8,或者使用 TornadoFX 2.0.0-SNAPSHOT 运行,该软件可从 oss.sonatype.org 获得。此版本支持 Java/JavaFX 13。

    【讨论】:

    • 谢谢!将 build.gradle 更改为在 buildscript 中包含 ext.tornadofx_version = "2.0.0-SNAPSHOT"(从 1.7.19 开始),它现在可以工作了。
    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多