05. januar 2003 - 20:22Der er
3 kommentarer og 1 løsning
getContentPane blokerer for keylistener, hvorfor?
Denne kode virker perfekt under jre/jdk 1.3, men under 1.4 virker min keylistener ikke. Hvis jeg udkommenterer getContentPane().add(knap) ; virker KeyListener metoderne imidlertid igen.
Hvordan får jeg den samlede kode til at virke under jdk 1.4, som den gør under 1.3, så jeg kan bruge både en GUI-knap(getContentPane().add(knap)) og tastaturknap(keylistener)?
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Du skal tilføje din keylistener der hvor du vil lytte, det kunne f.eks. være på knap i dit eksempel. At tilføje en keylistener til en JFrame er ikke hensigtsmæssigt, f.eks. betyder det at der skal lyttes på samtlige komponenter i JFrame'n og hvad så med de komponenter der i forvejen har listenere? En JFrame er sædvanligvis fyldt op med andre komponenter og der er ikke nødvendigvis noget område der er tomt hvor man kunne sige at der naturligt skulle lyttes efter key events. Hvis du istedet for addKeyListener(this) skriver knap.addKeyListener(this) skulle det virke.
Jeg er ikke en stor haj til Java, men netop en KeyListener er vel ikke beregnet til at lytte på GUI-komponenter, men på tastatur-input, der så knyttes til et eller andet i min JFrame.
Hvad med f.eks en quick-tast(F1) til hjælp, hvilke komponent skal jeg add'e min keylistener, hvis der ikke lige er en hjælpeknap på min GUI. Eller en mulighed for at lukke en pop-up dialog med Escape-knappen. Der må være en anden løsning, som i 1.3, det virker mere logisk at tilføje keylistener til den aktuelle Frame/dialog.
Jeg har arbejdet lidt med din løsning, og den virker til dels, men på en for mig helt u-forståelig måde. Hvis der er JTextFields, SKAL ALLE textfelter have en keylistener add'et, hvis der kun er knapper, skal bare een af knapperne have en keylistener, uanset om den aktuelle knap har behov for tastatur-input. Jeg har også prøvet at lave en dialog der skal lukkes ved tryk på Escape, og det virkede hvis jeg add'ede keylisteneren til en JList. Det giver ikke en logisk Java-mening, og slet ikke nogen køn kode, men det virker, og du skal selvfølgelig have dine point, men jeg håber at andre kan komme med en lidt pænere løsning, for jeg forstår ikke meningen, selvom jeg ved der er en mening.
Men tak for hjælpen alligevel.
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.