JTable - не должен переходить к следующему столбцу после нажатия возврата в конец столбца. - PullRequest
1 голос
/ 12 октября 2011

Поведение по умолчанию в JTable, по-видимому, таково: если я достигну последней строки столбца и нажму return, я попаду в первую строку следующего столбца. Есть ли способ избежать этого? Пожалуйста, предложите способ, которым я мог бы остаться в последнем ряду той же колонки. Я также хочу избежать ситуации, когда меня переводят в следующий столбец, а затем обнаруживают его и возвращаются к предыдущему, потому что с ним связаны некоторые слушатели. Любая помощь приветствуется.

1 Ответ

4 голосов
/ 12 октября 2011

, чтобы изменить любое навигационное поведение, замените навигационные действия по умолчанию вашими.Лучше всего оборачивать значения по умолчанию: условно либо делать по умолчанию, либо ваши собственные вещи.Что-то вроде

    Object key = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
        .get(KeyStroke.getKeyStroke("ENTER"));
    final Action action = table.getActionMap().get(key);
    Action custom = new AbstractAction("wrap") {

        @Override
        public void actionPerformed(ActionEvent e) {
            int row = table.getSelectionModel().getLeadSelectionIndex();
            if (row == table.getRowCount() - 1) {
                // do custom stuff
                // return if default shouldn't happen or call default after
                return;
            }
            action.actionPerformed(e);
        }

    };
    table.getActionMap().put(key, custom);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...