GWT で CellTable を作成し、キーボードを
.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
使用できるように設定しました。
これで、キーボードで上下に移動し、スペースバーを押して各行を操作できるようになりました。この CellTable にカスタム キーボード ショートカットを追加することは可能ですか? たとえば、スペースバーを入力ボタンとして機能するように変更したいとします。
GWT で CellTable を作成し、キーボードを
.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
使用できるように設定しました。
これで、キーボードで上下に移動し、スペースバーを押して各行を操作できるようになりました。この 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);
}
}});