我在GWT中创建了一个CellTable并设置了
.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
能够使用键盘。
现在我可以使用键盘上下移动并按下空格键以与每行进行交互。是否可以为此CellTable添加自定义键盘快捷键?例如,我想更改空格键以充当输入按钮。
答案 0 :(得分:1)
你可以抓住任何按键并做任何你喜欢的事情。如果覆盖该键的默认行为,则需要先取消本机事件,然后执行操作。
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 :(得分:0)
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);
}
}});