本文介紹了已使用JavaFX KeyPressed事件,仍在Textfield中的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我用JavaFX制作了一個簡單的乒乓球游戲。然而,我在設(shè)置控件時遇到了問題。我使用的文本字段如下:
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();
}
});
但是,每當(dāng)按下鍵入字符的鍵時,它就會像so:ss一樣在Textfield中復(fù)制。
將Handle()代碼替換為
control_0.setText("");
om.setControls(0,ke.getCode().toString());
負(fù)責(zé)處理這一點(diǎn),但是箭頭鍵和類似鍵在Textfield中不顯示任何內(nèi)容(盡管它們在游戲中可以工作)。如何解決此問題/一致性問題?
推薦答案
您實(shí)際上似乎不需要TextField
。您只需將TextField
替換為Label
并將事件處理程序添加到Scene
。
但是,如果您堅(jiān)持使用TextField
,您可以對所有KeyEvent
使用事件篩選器,以防止事件達(dá)到修改TextField
:
的文本的默認(rèn)EventHandler
control_0.addEventFilter(KeyEvent.ANY, evt -> {
if (evt.getEventType() == KeyEvent.KEY_PRESSED) {
control_0.setText(evt.getCode().toString());
}
evt.consume();
});
這篇關(guān)于已使用JavaFX KeyPressed事件,仍在Textfield中的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,