我正在實施一個自定義小部件,擴展了Composite
並實施了Focusable
和HasFocusHandlers
。GWT FocusPanel,標籤鍵和焦點處理程序
該小部件在一個面板中包含兩個小部件,我將其包裝到FocusPanel
中,用於初始化小部件。我的構造看起來就像這樣:
public CustomBox() {
panel = new VerticalPanel();
...
panel.add(caption);
panel.add(icon);
...
focusPanel = new FocusPanel(panel);
initWidget(focusPanel);
}
我委託Focusable
和HasFocusHandlers
的實施調焦面板,如:
@Override
public void setFocus(boolean focused) {
focusPanel.setFocus(focused);
}
@Override
public void setTabIndex(int index) {
focusPanel.setTabIndex(index);
}
@Override
public HandlerRegistration addFocusHandler(FocusHandler handler) {
return focusPanel.addFocusHandler(handler);
}
此後,我可以用setFocus(true)
設置任何焦點我的對象和setTabIndex()
設置選項卡索引。 Tab鍵也按預期工作,但我的問題是我無法處理焦點事件,因爲addFocusHandler()
添加的處理程序的方法不會被調用。
我知道焦點在改變,因爲我遵循了使用:focus
CSS選擇器改變其風格的objets焦點。
爲什麼焦點處理程序從不調用?