当前位置: 首页 > 知识库问答 >
问题:

JavaFx KeyPressed事件已使用,仍在TextField

钱承允
2023-03-14

我用JavaFX做了一个简单的乒乓球游戏。然而,我有一个问题与设置控制。我使用的文本字段如下所示:

control_0.setOnKeyPressed(new EventHandler<KeyEvent>()
        {
            @Override
            public void handle(KeyEvent ke)
            {
                control_0.setText(ke.getCode().toString());
                om.setControls(0,ke.getCode().toString());
                ke.consume();
            }
        });
control_0.setText("");
om.setControls(0,ke.getCode().toString());

但是箭头键和类似键在TextField中什么都不显示(尽管它们在游戏中起作用)。如何修复此问题/一致性问题?

共有1个答案

商飞龙
2023-03-14

您实际上似乎并不需要textfield。您只需将文本字段替换为标签并将事件处理程序添加到场景

但是,如果您坚持使用TextField,则可以对所有KeyEvent使用事件筛选器,以防止事件到达修改TextField文本的默认EventHandler:

control_0.addEventFilter(KeyEvent.ANY, evt -> {
    if (evt.getEventType() == KeyEvent.KEY_PRESSED) {
        control_0.setText(evt.getCode().toString());
    }
    evt.consume();
});
 类似资料:
  • 我在Java和C#等OOP语言方面非常有经验。直到现在,我才开始与FX打交道,并开始在办公室无聊地处理事件。 我的外汇申请都是在一个类中编写的。我导入了我想要的软件包,包括以下两个: 我在主类声明中实现了类型为ActionEvent的EventHandler接口,如下所示。。 我在按钮对象上编写了一个匿名内部类来处理这样的单击事件。 它显然像它应该的那样工作,但后来我进行了一个实验。我从上面删除了

  • 问题内容: 我有以下5个文件: gui.py functions.py 线程处理程序 variables.py 和start.py 执行start.py之后,我收到消息:“ QCoreApplication:exec:事件循环已在运行 ” 我发现,这与计时器有关 从 start.py 和功能 在 functions.py中 有人可以向我解释问题是什么吗?我不知道代码有什么问题… 问题答案: 我认为

  • 问题内容: 我正在计划制作Java Swing应用程序,并且想知道是否仍在使用Swing或是否已将其替换为其他东西。 提前致谢! 问题答案: 我们仍然使用它。并非所有的东西都是Web应用程序,到目前为止,已经进行了一些尝试性的替换(例如,将Eclipse写入到 SWT 中)。SWT拥有一个本机层,将基础调用包装到本机窗口层。它仅适用于有限的平台集,并且当然需要一些第三方共享库。我敢说,SWT应用程

  • 问题内容: Java Swing是否仍在使用?是我发现的最新帖子,它是4岁(现在是9岁),所以… 是否在 专业环境中 使用过Swing ?我是一名学生,想知道它是否值得学习,或者它的时代已经过去了。 (我不是在问Swing与AWT的比较…只是在劳动力中Swing是否已过时。) 问题答案: 现有的GUI Java代码库多数都将保持这种状态,直到代码库腐烂并且没有人再维护它为止。 大多数 新的 GUI

  • 朋友们早上好,我的问题如下。我有一个带有按钮的cardview,我在recyclerview中捕捉按钮事件,但我想在包含recyclerview的片段中捕捉按钮事件。 我需要利用这里的事件。 提前感谢。

  • 我正在为我的生产者和消费者应用程序使用Spring kafka事务。 要求在生产者方面有多个步骤:将消息发送到kafka,然后保存到db。如果保存到db失败,则希望回滚发送给kafka的消息。 所以在消费者方面,我将设置为,如果消息是从kafka回滚的,消费者不应该阅读它。 生产商应用代码为: 因此,我在saveToDb方法中显式抛出一个异常,并且可以看到异常抛出。但是消费者应用程序仍然可以看到消