已使用JavaFX KeyPressed事件,仍在Textfield中 [英] JavaFx KeyPressed event consumed, still in TextField

查看:0
本文介绍了已使用JavaFX KeyPressed事件,仍在Textfield中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用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();
            }
        });
但是,每当按下键入字符的键时,它就会像so:ss一样在Textfield中复制。 将Handle()代码替换为

control_0.setText("");
om.setControls(0,ke.getCode().toString());

负责处理这一点,但是箭头键和类似键在Textfield中不显示任何内容(尽管它们在游戏中可以工作)。如何解决此问题/一致性问题?

推荐答案

您实际上似乎不需要TextField。您只需将TextField替换为Label并将事件处理程序添加到Scene

但是,如果您坚持使用TextField,您可以对所有KeyEvent使用事件筛选器,以防止事件达到修改TextField

的文本的默认EventHandler
control_0.addEventFilter(KeyEvent.ANY, evt -> {
    if (evt.getEventType() == KeyEvent.KEY_PRESSED) {
        control_0.setText(evt.getCode().toString());
    }
    evt.consume();
});

这篇关于已使用JavaFX KeyPressed事件,仍在Textfield中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆