27. oktober 2001 - 16:29Der er
2 kommentarer og 2 løsninger
konflikt mellem actionlistener og keylistener
Jeg har et problem med at min actionlistener går ind og \"stjæler\" events fra min keylistner. Actionlisteneren håndterer mine buttons og keylisteneren bruges til at håndtere tekstinput.
Eks Jeg vil oprette et objekt bestående af noget tekst ved at trykke på ENTER. Desværre fanger actionlisteneren dette, og den knap jeg sidst havde trykket på bliver valgt.
Er der en måde at se på ActionEventen hvad det var der blev trykket på? Eller en anden metode til at løse problemet?
PS:og lægge áctionlistenerens funktionalitet over i en mouselistener er formentligt ikke brugbart da denne allerede er meget belastet!
Du kan se på din ActionEvent (ae) hvad der blev trykket på på flere måder: ae.getSource() giver den komponent der gav event\'en, dvs hvis du har en JButton b der genererede event\'en vil ae.getSource().equals( b ) give true. Alternativt giver ae.getActionCommand() en String der indeholder teksten på komponenten, dvs hvis ud har en JButton b = new JButton(\"click me\") vil ae.getActionCommand().equals(\"click me\") give true. Det behøver ikke være teksten på knappen der returnes, du kan selv sætte teksten med b.setActionCommand(\"this is the click me event\") For et tekstfelt vil getActionCommand() vist nok returnere teksten i feltet.
Problemet ligger ikke i at bestemme hvilken knap der blev trykket på (JButton) men i at bestemme om det var et tryk på enter (keyboard) der udløste actioneventen.
Du kan også bruge setActionCommand(String) på et JTextField og det kan så bruges til at detektere at det var enter der blev trykket og så kan din kode i actionPerformed ignorere det der skete og lade KeyListener\'en tage var på hvad der skal ske.
Problemet ligger i at en JButton automatisk får tilknyttet nogle events, f.eks tryk på enter og space. Jeg fandt en løsning omend det var noget besværligt. Tak for din hjælp carsten selvom det ikke løste mit problem lærte jeg da lidt
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.