[英]How to intercept KeyPressEvent in Java GWT?
我是Java新手,在我們的代碼中我們使用GWT。
我們使用KeyPressEvent
來處理Key_Enter
請求。 但對於每個輸入請求,似乎是從KeyPressEvent
觸發的兩個事件。 但我希望只有一個事件應該被解雇,因為我只進入一次。
以下是我的代碼。 請檢查並告訴我,我們需要糾正的任何事情..
void onEnter(KeyPressEvent event)
{
if(event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER)
{
//(seems to times this code is called)
//Domy stuff
}
}
如果我使用event.getCharCode()
而不是event.getNativeEvent().getKeyCode()
,它只返回0。
知道怎么解決。
謝謝,
我更喜歡使用KeyUpEvent
因為用戶無法將其與KeyPressEvent
區分開來,所以這是我的解決方案:
void onKeyUp(KeyUpEvent event) {
if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
// Handle key press
}
}
KeyEvent的JavaDoc警告說,鍵盤處理中的瀏覽器特性沒有被GWT完全標准化。 以下是文檔的引用:
本機鍵盤事件有點混亂(http://www.quirksmode.org/js/keys.html),我們在這里進行一些簡單的規范化,但不要嘗試任何復雜的修補,因此請警告用戶。
這意味着瀏覽器在如何觸發不同的鍵盤事件方面不一致,您應該在自己的代碼中處理怪癖。
閱讀http://www.quirksmode.org/js/keys.html以了解更多信息。
嘗試在試圖監聽的小部件上調用sinkEvents。 這應該在構造小部件后立即完成。
widget.sinkEvents(Event.KEYEVENTS)
KeyPressEvent
用於產生實際字符代碼的按鍵 - 就像按下'a'鍵一樣。 如果您想在按下回車鍵時收到通知,請使用KeyDownEvent
:
void onEnter(KeyDownEvent event) {
if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
// Handle key press
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.