![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
Почему данный код не работает? p.s добавляю на JFRAME , кликаю в любое место, на любые объекты |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
у меня работает
да ладно, шутка |
|||
|
||||
| Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
У меня есть Jframe на нем JtabbedPane на нем Jpanel на нем Jtable ,кнопки, поля для ввода ... Мне нужно делать поддержку горячих клавиш, для этого я написал слушатель клавиатуры
Он работает ,только тогда когда форма в setFocusable(true); А при любом нажатие на таблицу,или текстовое поле ,этот параметр переходит в false => Поставить слушателя мЫшки не зависимо от формы , и при каждом щелчке выставлять setFocusable(true); в true. P.s. Может есть дурой способ удержать фокус, или сделать слушатель клавиатуры активным? пытался повесить на поток ,каждые секунду, но тогда невозможно ничего вводить в тесктовые поля ,фокус уходит |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 21 Всего: 75 |
Все гораздо проще. Слушайте клавиатуру вот таким образом:
ловится независимо от фокуса Это сообщение отредактировал(а) jk1 - 15.1.2010, 20:47 -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Su_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
не понял этот момент, я так понимаю getContentPane() , но у него нету метода registerKeyboardAction
|
||||
|
|||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 21 Всего: 75 |
Вот так:
У JPanel нужный метод есть -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
хм,что то я совсем не увидел отклика . т.е не работает
если сделать новую панель и setContentPane(contentPane); то она перекроет вcё что было на Форме, и не срабатывает |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
||||
|
||||
| Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
горячие клавиши это я громко сказал, допустим сочетание двух любых кнопок
|
|||
|
||||
| jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 21 Всего: 75 |
А у меня работает. Вот тестовый пример:
1) Запускаем диалог и жмем Ctrl+Q - срабатывает 2) Ставим фокус ввода в textArea (насколько я понял, ваш обработчик не справлялся именно в таком случае) и жмем Ctrl+Q - срабатывает Если требуется еще что-то и я вас неправильно понял - корректнее формулируйте задачу. -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
| Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
Как я понял, в этом методе надо все что добавляешь на форму , добавлять на contentPane. А если например я добавляю на contentPane еще contentPane1 и на него contentPane2 и уже на contentPane2 добавляю textArea . Разве при такой реализации будет работать слушатель клавиатуры на textArea?
А вообще, спасибо) |
|||
|
||||
| jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 21 Всего: 75 |
Да это так.
То ничего не изменится, все равно будет работать. Обратите внимание на JComponent.WHEN_IN_FOCUSED_WINDOW в коде - от глубины вложенности не зависит никак. Из чистого любопытства я вложил 8 панелей одну в другую - все по-прежнему ловится, как и ожидалось. -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
| Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
спасибо огромное)буду прикручивать в к своей задаче)
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |