Как сделать панель прокрутки статичной? - PullRequest
2 голосов
/ 26 сентября 2011

Наблюдение ::

Всякий раз, когда пользователь достигает последней ячейки таблицы и нажимает клавишу Tab, фокус смещается на первую ячейку, то есть на верхнюю часть таблицы.

Вернул табличное представление к последней ячейке, используя функцию table.scrollRectToVisible (rect) , но из-за этого происходит движение и выглядит как ложное изменение в таблицезначения.

Сценарий :: Если у меня есть сделать панель прокрутки статической в ​​определенной позиции, чтобы я мог контролировать движение.Как сделать это возможным ..

Заранее спасибо ...

1 Ответ

4 голосов
/ 26 сентября 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) {
            // implement your prevention logic
            // here: don't perform if the current cell focus is the very cell of the table
            int row = table.getSelectionModel().getLeadSelectionIndex();
            if (row == table.getRowCount() - 1) {
                int column = table.getColumnModel().getSelectionModel().getLeadSelectionIndex();
                if (column == table.getColumnCount() -1) {
                    // if so, do nothing and return
                    return;
                }
            }
            // if not, call the original action
            action.actionPerformed(e);
        }

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