1
我有一個gwt VerticalPanel類,我需要爲它處理KeyDown事件。 我用來實現在我的課鍵盤處理方法是: 我補充一下:在GWT垂直面板上註冊KeyDownHandler
this.sinkEvents(Event.ONKEYDOWN);
同構造函數 然後我重寫方法onBrowserEvent()來處理key down事件。
@Override
public void onBrowserEvent(Event event) {
// TODO Auto-generated method stub
super.onBrowserEvent(event);
int type = DOM.eventGetType(event);
switch (type) {
case Event.ONKEYDOWN:
//call method to handle this keydown event
onKeyDownEvent(event);
break;
default:
return;
}
}
但是,此方法不適用於此VerticalPanel類。no KeyDown當我按下按鍵時會觸發事件!
有一些支持KeyDownHandler的特定gwt小部件,如Button等.VerticalPanel不是其中之一。因此,我們需要在擴展VerticalPanel的類上註冊KeyDownHandler。 你能提出一個想法或提示嗎?
感謝
是完美的解決方案。我事實上意識到FocusPanel是通過將我的VerticalPanel包裝到FocusPanel中的解決方案。但是,您的代碼非常優雅。我喜歡寫一個ExtendedVerticalPanel的想法。非常感謝! – othman 2010-12-14 04:18:03
不客氣。 – z00bs 2010-12-14 06:30:11
您好,我還有一個問題:當我爲我的ExtendedVerticalPanel註冊keyDownHandler並使用向上/向下鍵時,它將觸發瀏覽器窗口滾動條,同時觸發我面板的按鍵事件。這種行爲是不可接受的。我通過在KeyDownHandler.onKeyDown(KeyDownEvent事件)方法開始時調用event.stopPropagation()來嘗試修復。問題是,停止事件傳播禁用我的面板內的小部件,如TextBox等所有的關鍵事件..我怎樣才能防止瀏覽器窗口滾動滾動,而我的面板上使用鍵上/下?非常感謝。 – othman 2010-12-14 12:02:32