Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Функциональные клавиши в JTable


Автор: Zverek 19.7.2005, 15:01
Есть редактируемый JTable, он реализует интерфейс KeyListener. В keyPressed() при нажатии определённых функциональных клавиш (F7 - F8) запускаются обработчики:
Код

  public void keyPressed(KeyEvent e)
  {
    int key = e.getKeyCode();
    int modifier = e.getModifiers();

    if (key == KeyEvent.VK_F7 && modifier == 0)
    {
        enterQuery();
    }else if (key == KeyEvent.VK_F8 && modifier == 0)
    {
        executeQuery();
    }
  }


Всё работает, кроме случая, когда какая-нибудь ячейка находится в режиме редактирования - в этом случае KeyListener просто не реагирует на нажатие этих клавиш. DefaultEditor для ячеек не переопределял.
Как бы это исправить ?

Я так понимаю происходит это потому, что управление передаётся DefaultEditor 'у - а как реагировать на нажатия этих клавиш он не знает. Т.е. если я переопределю DefaultEditor и реализую в нём интерефейс KeyListener - всё будет работать. Так я мыслю ?

Автор: anonymouse 19.7.2005, 15:32
Если ты имеешь ввиду TableCellEditor то мыслишь почти правильно. Дело не в самом KeyListener, а в том кому ты его присобачибаешь. Когда активизируется CellEditor, он шлет Component. И полу4ается 4то фокус у тебя стоит на этом компоненте.
Без переписывания TableCellEditor для всех колонок не обойдешся.

Автор: Zverek 19.7.2005, 15:53
Да, я описался, под "DefaultEditor" следует понимать класс DefaultCellEditor.

Ясно. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)