0

我在 GWT 中创建了一个 CellTable,并设置 .setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); 为启用键盘。

现在我可以用键盘上下移动并按空格键与每一行交互。是否可以向此 CellTable 添加自定义键盘快捷键?例如,我想将空格键更改为输入按钮。

4

2 回答 2

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
        }
    }

});

小心空格键。它在某些浏览器中充当“向下翻页”,因此用户在按下它时可能不会期望您的自定义行为。

于 2012-12-28T10:34:52.163 回答
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);
    }
}});
于 2014-05-11T10:03:48.557 回答