# Pfeiltasten für KeyEvent



## Infostudent (12. Okt 2007)

Hallo,


kann mir jemand sagen wie die Tastenbezeichnungen für die linke und rechte Pfeiltaste lauten (die des Cursors)? Ich hätte gedacht es ist VK_LEFT oder VK_KP_LEFT (bzw. RIGHT). Diese funktionieren aber nicht (sowohl aufm Laptop als auch auf einer angeschlossenen Tastatur) und andere Bezeichnungen hab ich in der Javadoc auf Anhieb nicht gefunden. 


Brauche die Tastaturkeys zum Bearbeiten von Ereignissen:


```
if( myKey == KeyEvent.VK_RIGHT) {...}
```


PS: ENTER und BACKSPACE funktionieren zum Beispiel (ist also kein allgemeiner Fehler). 


Grüße,
Infostudent.


----------



## SlaterB (12. Okt 2007)

toll so eine Behauptung und kein Ausprobier-Programm dabei, was du ja anscheinend still vor dir liegen hast..


```
public class TestGUI
    extends JFrame
    implements KeyListener
{

    public TestGUI()
        throws Exception
    {

        setLayout(new FlowLayout());

        JTextField f = new JTextField("Test");
        add(f);
        f.addKeyListener(this);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(1000, 400);
        setVisible(true);
    }

    public static void main(String[] args)
        throws Exception
    {
        new TestGUI();
    }

    public void keyPressed(KeyEvent e)
    {
        System.out.println(e.getKeyCode() + ", " + KeyEvent.VK_RIGHT);
        if (e.getKeyCode() == KeyEvent.VK_RIGHT)
        {
            System.out.println("klappt");
        }
    }

    public void keyReleased(KeyEvent e)
    {
    }

    public void keyTyped(KeyEvent e)
    {
    }

}
```

alles geht, was ist die Frage?


----------



## André Uhres (12. Okt 2007)

Und noch ein Beispiel :wink:

```
package events;

/*
 * KeyEventsDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class KeyEventsDemo extends JFrame implements KeyListener {

    private JPanel mainpanel;

    public KeyEventsDemo() {
        super("KeyEventsDemo: press right/left arrow");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(400, 300);
        setLocationRelativeTo(null);
        mainpanel = new JPanel();
        mainpanel.addKeyListener(this);
        getContentPane().add(mainpanel, BorderLayout.CENTER);
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                mainpanel.requestFocusInWindow();
            }
        });
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new KeyEventsDemo().setVisible(true);
            }
        });
    }

    @Override
    public void keyTyped(KeyEvent e) {
    }

    @Override
    public void keyPressed(KeyEvent e) {
        int myKey = e.getKeyCode();
        if (myKey == KeyEvent.VK_RIGHT) {
            mainpanel.add(new JLabel(">"));
        }
        if (myKey == KeyEvent.VK_LEFT) {
            mainpanel.add(new JLabel("<"));
        }
        mainpanel.revalidate();
    }

    @Override
    public void keyReleased(KeyEvent e) {
    }
}
```


----------



## Infostudent (12. Okt 2007)

Vielen Dank.


Ich glaube mein Problem war, dass ich es dauernd in der KeyTyped() probiert habe. In der KeyPressed() funktioniert es jetzt.


Grüße,
Infostudent.


----------



## Wildcard (12. Okt 2007)

Daher liest man auch die API-Doc der Methoden und Klassen die man verwendet  :meld: 


> "Key typed" events are higher-level and generally do not depend on the platform or keyboard layout. They are generated when a Unicode character is entered, and are the preferred way to find out about character input. In the simplest case, a key typed event is produced by a single key press (e.g., 'a'). Often, however, characters are produced by series of key presses (e.g., 'shift' + 'a'), and the mapping from key pressed events to key typed events may be many-to-one or many-to-many. Key releases are not usually necessary to generate a key typed event, but there are some cases where the key typed event is not generated until a key is released (e.g., entering ASCII sequences via the Alt-Numpad method in Windows). *No key typed events are generated for keys that don't generate Unicode characters* (e.g., action keys, modifier keys, etc.).


----------

