ScalaFX TextField onkeyPress 事件总是被消耗

问题描述

我有一个问题,它并不重要,只是我学习过程的一部分。

我试图阻止按键进入 TextField。我创建了一个 onKeypressed 事件处理程序,我假设我可以在处理程序中使用该事件并且它不会继续进行但它已经被消耗了!

多一点研究,我认为问题在于这不是一个真实的事件,因为它不是由按键直接引起的,而是由场景处理该事件引起的。所以我想把它放在现场,但没有被弃用!

我想我可以让它以这种方式工作,但我想知道如何在不使用不推荐使用的东西的情况下做到这一点。

我承认我尝试做的事情可能不明智、不明智或没有任何实际用途,但获得的知识除外,即使那只是不要那样做。我们从错误中学习(希望如此)在周日下午比在周五下午 5 点学习要好得多,因为老板会问什么时候完成。

任何关于为什么我将事件视为已消费的想法以及向场景添加事件处理程序的替代方法都将极大地提高我的学习和接受我的感谢。

示例添加

package example

import scalafx.application.JFXApp
import scalafx.scene.Scene
import scalafx.scene.control.TextField
import scalafx.scene.layout.Pane

object Main extends JFXApp {

  stage = new JFXApp.PrimaryStage {
    title = "Example"
    width = 600
    height = 200

    scene = new Scene {
        root = {
            new Pane{
                val t: TextField = new TextField {
                    onKeypressed = e => {
                        val et = e.getEventType
                        val consumed = if (e.isConsumed) {"consumed"} else { "not consumed"}
                        println(s"${et} occurred and was ${consumed}")
                    }
                }

                children = List(t)
            }
        }
    }
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)