Как добавить таможенные клавиши быстрого вызова к GWT CellTable

Я создал CellTable в GWT, и я установил .setKeyboardSelectionPolicy (KeyboardSelectionPolicy. ПОЗВОЛЕННЫЙ); позволить использование keyboad.

Теперь я могу двинуться вверх и вниз с клавиатурой и нажать интервал, чтобы взаимодействовать с каждым рядом. Действительно ли возможно добавить таможенные клавиши быстрого вызова к этому CellTable? Например, я хочу изменить интервал, чтобы действовать как войти кнопка.

0
nl ja de

3 ответы

Можно поймать любой нажатый ключ и сделать то, что вы любите. Если вы отвергаете поведение по умолчанию того ключа, необходимо отменить родное событие сначала, то сделать действия.

CellTable myTable = new CellTable();
// build myTable

myTable.addCellPreviewHandler(new Handler() {

    @Override
    public void onCellPreview(CellPreviewEvent 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
добавлено
Вы добавляете этот CellPreviewHandler непосредственно к вашему виджету CellTable. Ваш SelectionChangeHandler добавляется к вашему SelectionModel - это должно использоваться, чтобы получить выбранный объект (объекты). Вы don' t должен добавить CellPreviewHandler к вашему SelectionChangeHandler, если вы не пытаетесь изменить поведение выбора (не рекомендуемый).
добавлено автор Andrei Volgin, источник
Жаль, но я don' t понимают, может дать мне пример? в моем коде у меня есть addSelectionChangeHandler, где я добавляю метод addCellPreviewHandler
добавлено автор v3ctor, источник

Можно поймать любой нажатый ключ и сделать то, что вы любите. Если вы отвергаете поведение по умолчанию того ключа, необходимо отменить родное событие сначала, то сделать действия.

CellTable myTable = new CellTable();
// build myTable

myTable.addCellPreviewHandler(new Handler() {

    @Override
    public void onCellPreview(CellPreviewEvent 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
добавлено
Вы добавляете этот CellPreviewHandler непосредственно к вашему виджету CellTable. Ваш SelectionChangeHandler добавляется к вашему SelectionModel - это должно использоваться, чтобы получить выбранный объект (объекты). Вы don' t должен добавить CellPreviewHandler к вашему SelectionChangeHandler, если вы не пытаетесь изменить поведение выбора (не рекомендуемый).
добавлено автор Andrei Volgin, источник
Жаль, но я don' t понимают, может дать мне пример? в моем коде у меня есть addSelectionChangeHandler, где я добавляю метод addCellPreviewHandler
добавлено автор v3ctor, источник

1-Вы не должны отключать keyboardSelectionPolicy сначала.

2-необходимо добавить этот блок к конструктору или onLoad методу:

myTable.addCellPreviewHandler(new CellPreviewEvent.Handler() {
@Override
public void onCellPreview(CellPreviewEvent 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);
    }
}});
0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async