Avatar billede Slettet bruger
20. oktober 2008 - 09:24 Der er 2 kommentarer og
2 løsninger

Læs tastatur tryk

Hej Eksperter :)

Er det muligt at aflæse om der bliver trykket på en knap på tastaturet, og hvilken en, når der ikke er tale om et applet?

Syns ikke jeg kan finde noget. Har kun fundet en KeySelectionManager på en JComboBox, og det er ret fesent :P

Mvh
Bjarke
Avatar billede gedfrik Nybegynder
20. oktober 2008 - 13:55 #1
Du kan benytte dig af en KeyListener, der kan implementeres i en JComponent F.eks:

public class myPanel extends JPanel implements KeyListener{
//Tilføjer en KeyListener til dette panel
this.addKeyListener(this);
}

Der er 3 metoder du her skal implementere:

keyPressed(), keyReleased() og keyTyped()

Når en bruger trykker på en knap kan du F.eks. fange dette event i keyTyped metoden:

public void keyTyped(KeyEvent e) {
        System.out.println(e.getKeyChar());
}

HUSK at give din komponent fokus vha. JComponent.requestFocus(). Ellers fanger du ikke nogle taste-tryk overhovedet.

Sig til hvis jeg skal uddybe :)
Avatar billede Slettet bruger
20. oktober 2008 - 18:34 #2
Jeg har fået lavet noget kode, og det virker :D
Det eneste problem er at når man trykker på piletaster, space, alt, ctrl eller F-tasterne, så siger den bare "?", og ved space, sker der intet.

Min kode ser således ud:
Her kalder jeg classen
    JPanel KeyPanel = new JPanel(new BorderLayout());
    KeyPanel.add(new Keylisten(), BorderLayout.CENTER);
    f.getContentPane().add(KeyPanel);

Og sådan ser classen ud
Keylisten.java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Keylisten extends JComponent implements KeyListener
{
public Keylisten()
{
this.addKeyListener(this);
}

public void keyTyped(KeyEvent e){}
public void keyPressed(KeyEvent e)
{
System.out.println(e.getKeyChar());
}
public void keyReleased(KeyEvent e){}

public boolean isFocusTraversable()
{
return true;
}

}

Håber du kan hjælpe :), men tak for hjælpen indtil videre :), gav mig et skub i den rigtige retning ;)

Mvh
Bjarke
Avatar billede gedfrik Nybegynder
20. oktober 2008 - 19:23 #3
Det betyder bare at de taster der returnerer '?' ikke har nogen char tilknyttet - metoden viste jeg dig også bare så du fik en idé om hvordan det virkede. En bedre metode er at bruge e.getKeyCode() i stedet for e.getKeyChar(). Denne metode returnerer et tal, der svarer til en bestemt knap.

Ulempen er så at du først bliver nødt til at trykke på knapperne og se hvilke numre de svarer til før du kan bruge det til noget ;)
Men så kan du i hvert fald godt få noget til at ske når du trykker på space!
Avatar billede Slettet bruger
20. oktober 2008 - 22:51 #4
Takker ;)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester