我在GWT中創建了一個CellTable,並且設置了 .setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
以啓用keyboad。如何將自定義鍵盤快捷鍵添加到GWT CellTable
現在我可以上下鍵盤移動並按空格鍵與每一行進行交互。是否可以添加自定義鍵盤快捷鍵到這個CellTable?例如,我想將空格鍵更改爲輸入按鈕。
我在GWT中創建了一個CellTable,並且設置了 .setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
以啓用keyboad。如何將自定義鍵盤快捷鍵添加到GWT CellTable
現在我可以上下鍵盤移動並按空格鍵與每一行進行交互。是否可以添加自定義鍵盤快捷鍵到這個CellTable?例如,我想將空格鍵更改爲輸入按鈕。
你可以捕捉任何按鍵,做任何你喜歡的事情。如果您覆蓋該鍵的默認行爲,則需要先取消本地事件,然後執行您的操作。
CellTable<Object> myTable = new CellTable<Object>();
// build myTable
myTable.addCellPreviewHandler(new Handler<Object>() {
@Override
public void onCellPreview(CellPreviewEvent<Object> event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) {
// Get selected object or objects from your SelectionModel
// Do something with this object or objects, or
// do something with the selected row or rows
}
}
});
小心空格鍵。它在某些瀏覽器中充當「向下翻頁」的作用,因此用戶在按下時可能不會期望您的自定義行爲。
1-您不應該先禁用keyboardSelectionPolicy。
2 - 你應該將此塊添加到構造函數或方法的onLoad:
myTable.addCellPreviewHandler(new CellPreviewEvent.Handler<GuiltyAccusationInfoDto>() {
@Override
public void onCellPreview(CellPreviewEvent<GuiltyAccusationInfoDto> event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_UP || event.getNativeEvent().getKeyCode() == KeyCodes.KEY_DOWN
|| event.getNativeEvent().getKeyCode() == KeyCodes.KEY_LEFT || event.getNativeEvent().getKeyCode() == KeyCodes.KEY_RIGHT
|| event.getNativeEvent().getKeyCode() == KeyCodes.KEY_PAGEUP || event.getNativeEvent().getKeyCode() == KeyCodes.KEY_PAGEDOWN) {
selectionModel.setSelected(listOfData.get(table.getKeyboardSelectedRow()), true);
}
}});
很抱歉,但我不明白的可以給我一個例子嗎?在我的代碼中我有一個addSelectionChangeHandler,我添加方法addCellPreviewHandler – v3ctor
您可以直接將CellPreviewHandler添加到您的CellTable小部件中。你的SelectionChangeHandler被添加到你的SelectionModel中 - 它應該被用來獲取選定的對象。您不需要將CellPreviewHandler添加到您的SelectionChangeHandler,除非您嘗試修改選擇行爲(不推薦)。 –