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


Автор: 3d_den 28.3.2008, 13:18
Проблема следующая. Нужно сделать в программе MDI с переключением фреймов по ctrl-tab. 
Я пытался использовать метод JComponent.registerKeyboardAction(Object key, Object value), 
затем пробовал добавлять KeyListener. В обоих случаях получал одинаковый результат: 
программа реагирует на все сочетания клавиш кроме ctrl-tab. 
Так же я наткнулся на документированный баг 

Bug ID:  4736672  
Votes  7  
Synopsis  Ctrl-Tab and Shift-Ctrl-Tab do not work in JTabbedPane in Windows Look and Feel  
Category  java:classes_swing  
Reported Against  hopper-rc , merlin-rc1  
Release Fixed  1.5(tiger)  
State  Closed, fixed  

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4736672

Я использую jre1.4
Насколько я понимаю, суть проблемы в том, что какой то более низкоуровневый компонент перехватывает 
нажатие клавиш ctrl-tab, и не пропускает его дальше. Может ли кто-нибудь помочь мне???

Автор: philips 30.3.2008, 17:56
напиши эти строчки в тех компанентах (возможно еще потребуется добавить и в родительском фрейме) где ты хочешь повесить листенер на нажатие ctrl+tab и ctrl+shift+tab. 

Код

this.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET);
this.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET);


потом запусти прогу и потести, посмотри какие компаненты перехватывают это сочетание и примени эти методы к этим компанетам.

вроде должно заработать, по крайней мере у меня заработало. 

Автор: 3d_den 31.3.2008, 15:21
Спасибо!!! 
Всё получилось еще проще...
this.setFocusTraversalKeysEnabled(false);

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