JTable blokada skrótów (home, end)

Odpowiedz Nowy wątek
2011-10-07 16:09
0

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.


"Ten, de profundis, z ciemnego kurhanu
Na trąbę powstanie. " Juliusz Słowacki

"Polacy! Gdyby Spartanie odżyli i zobaczyli Wasz heroizm i bohaterstwo, waleczny i dzielny ten naród schyliłby przed Wami czoło. Polska nie może być zwyciężona." - J.Bryan

Pozostało 580 znaków

2011-10-07 21:32
1

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.


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Pozostało 580 znaków

2011-10-07 21:56
0

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"?


"Ten, de profundis, z ciemnego kurhanu
Na trąbę powstanie. " Juliusz Słowacki

"Polacy! Gdyby Spartanie odżyli i zobaczyli Wasz heroizm i bohaterstwo, waleczny i dzielny ten naród schyliłby przed Wami czoło. Polska nie może być zwyciężona." - J.Bryan
edytowany 4x, ostatnio: arrowman, 2011-10-07 22:12
Wygląda mi na to, że próbujesz usuwać listenery nie od tego obiektu, który faktycznie odbiera eventy i łapie focus. Nie ma ukrytych listenerów, ale są ukryte obiekty (np. prywatne i pakietowe). weź też pod uwagę to jak eventy sobie wędrują po drzewku obiektów gui. Najpierw idą od tego, który ma focus, a potem coraz wyżej, aż do okienka top-level. Każdy z nich może sobie coś szemrać. Na najwyższym poziomie są obsługiwane natywnie poza JVM - tak jak na przykład wszystkie klawisze systemowe (alt+tab, ctrl+alt+esc, ctrl+alt+del itd.). - Olamagato 2011-10-07 22:28
Ok. Osioł ze mnie. Zapomniałem o JScrollPane, które jest nad JTable. Ok. Tylko, że usunięcie listenerów z JScrollPane nic nie pomogło, a tylko to może mieć wpływ (oprócz JTable) na przesuwanie widoku w tabeli... Kurcze. Już nie wiem. Wydaje się trywialna rzecz. - arrowman 2011-10-07 22:39

Pozostało 580 znaków

2011-10-07 22:45
0

Podstawowe pytanie - co się dzieje po naciśnięciu Home lub End?


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Pozostało 580 znaków

2011-10-07 22:48
0

Ano tak:-)
home - przechodzi do 1 kolumny zaznaczonego wiersza.
end - przechodzi do ostatniej kolumny zaznaczonego wiersza.

Sorki...


"Ten, de profundis, z ciemnego kurhanu
Na trąbę powstanie. " Juliusz Słowacki

"Polacy! Gdyby Spartanie odżyli i zobaczyli Wasz heroizm i bohaterstwo, waleczny i dzielny ten naród schyliłby przed Wami czoło. Polska nie może być zwyciężona." - J.Bryan

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0