Szanowni forumowicze,
Mam napisane keyEventy na klawisze home i end. Ale wykonują mi się też domyślne ich funkcje. Nie wiem jak je zablokować, getInputMap().size zwraca zero, gdzie to jest?
Nadpisywałem keyPressed, keyReleased i nic.
Dziękuję,
A.
Nie wiem czy dobrze zrozumiałem, ale twoim problemem mogą być wcześniej zainstalowane (domyślnie?) listenery.
Istnieje sobie metoda KeyListener[] Component.getKeyListeners(), dzięki której dostaniesz listą wszystkich aktualnych listenerów na komponencie. Następnie za pomocą removeKeyListener() usuwasz sobie wszystkie i dodajesz swój (swoje). Coś w tym stylu:
for(KeyListener listenerNonGrata: component.getKeyListeners())
component.removeKeyListener(listenerNonGrata);
component.addKeyListener(słusznyListener);
Jeżeli robiłbyś to z wnętrza klasy, którą zmieniasz, to component. zamieniasz na this. lub nic.
A właśnie cała "ciekawość" tego problemu polega na tym, że jak usunę wszystkie keyListenery i cały ActionMap to złośliwy home i end nadal działają.
for(KeyListener keyListener : myJXTable1.getKeyListeners()) {
myJXTable1.removeKeyListener(keyListener);
}
for(Object key : myJXTable1.getActionMap().allKeys()) {
myJXTable1.getActionMap().remove(key);
}
Powyższy kod usuwa mi wszystkie moje keyEventy, ale nie te 2 klawisze.
Co to może być? Po prostu zwariować z tym można. Przeszukuję dokumentację i nic nie ma:/ Nawet nie wiem gdzie szukać jak to nie listener... Tzn. musi być, ale widocznie jakiś "ukryty"?
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.