TornadoFX 按键监听器问题

Ole*_*nov 0 kotlin tornadofx

当我运行以下代码时

fun main(args: Array<String>) {
    Application.launch(HelloWorldApp::class.java, *args)
}

class HelloWorldApp : App(HelloWorld::class)

class HelloWorld : View() {
    override val root = hbox {
        addEventFilter(KeyEvent.ANY) { event ->
            println("pressed:"+event.character)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我按下键盘上的任何键时, println() 永远不会被调用。我错过了什么吗?

Edv*_*yse 5

简单地添加一个HBox不会给它焦点,当它没有焦点时,它不会接收关键事件。您应该覆盖onDock并将侦听器添加到currentScene。如果您确实需要在 上HBox添加侦听器,请在停靠视图后添加侦听器并请求焦点:

fun main(args: Array<String>) {
    launch<HelloWorldApp>(args)
}

class HelloWorldApp : App(HelloWorld::class)

class HelloWorld : View() {
    override val root = hbox {
        addEventFilter(KeyEvent.ANY) { event ->
            println("pressed:" + event.character)
        }
    }

    override fun onDock() {
        root.requestFocus()
    }
}
Run Code Online (Sandbox Code Playgroud)