Русский English Тэги View Sergey Zolotaryov's profile on LinkedIn Вход
Как запретить автоматическое редактирование в JTable
Постоянная ссылка 04-06-2009 anydoby java

Запарила одна штука - когда в JTable нажимаешь любую клавишу (кроме стрелок), начинается редактирование. Например, в приложении настроено сочетание клавиш Control+S для сохранения, но если вы находитесь в таблице, то сохраниться не удастся - таблицы перехватывает все события. Чтобы этого не происходило, нужно зайти в метод JTable.processKeyBinding и найти флаг JTable.autoStartsEdit (мля, как я люблю эти хитрые флаги). Теперь поняли как это работает?


       table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);

Теперь все шорткаты в ваших руках :)

Да, после того, как вы сделаете то, что написано выше, редактировать можно будет по нажатии F2. Если вы хотите изменить и это, пишем следующее:


        Action action = table.getActionMap().get("startEditing");
        if (action != null)
        {
            table.getInputMap().put(KeyStroke.getKeyStroke("mykey"),
                    "startEditing");
        }

Спросите, откуда я такой умный? Посмотрите в класс BasicTableUI, там описаны все действия по умолчанию для таблиц, к сожалению, все константы приватные, так что хардкодим и радуемся.

Добавить комментарий

Предыдущая статья Превращение Eclipse проектов в osgi модули Следующая статья Derby, iBATIS и null