本文介紹了已使用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中的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,