我用JavaFx做了一个简单的Pong游戏。但是我在设置控件时遇到问题。我正在使用像这样的TextField:
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();
}
});
但是,每当按下键入一个字符的键时,它就像在一个字符串中一样重写:sS。 用
替换handle()代码control_0.setText("");
om.setControls(0,ke.getCode().toString());
负责这一点,但是箭头键和类似的东西在TextField中没有显示任何内容(尽管它们在游戏中起作用)。我如何解决这个问题/一致性问题?
答案 0 :(得分:0)
您实际上似乎不需要TextField
。您只需将TextField
替换为Label
,然后将事件处理程序添加到Scene
。
但是,如果您坚持使用TextField
,则可以对所有KeyEvent
使用事件过滤器,以防止事件达到默认EventHandler
}修改TextField
:
control_0.addEventFilter(KeyEvent.ANY, evt -> {
if (evt.getEventType() == KeyEvent.KEY_PRESSED) {
control_0.setText(evt.getCode().toString());
}
evt.consume();
});