# KeyListener



## pria (27. März 2007)

Moin , ich hab n kleines Prog geschrieben , das bei eingabe einer Taste einen Balken bewegen soll und bei eingabe einer zweiten einen anderen Balken.
das Problem dabei ist allerdings , das , wenn ich die eine Taste drücke , die andere geblockt ist und umgekehrt.
Kann man den KayListener so umschreiben , dass der auch mehrere Tasten gleichzeitig mitkriegt?


----------



## KlaDi (27. März 2007)

Hallo,

kannst Du vielleicht mal nen bisschen Code posten? normalerweise kannst Du bei dem KeyListener abfragen, welche Taste gedrückt wurde zur Not mal mit debuggen den Code rausfinden und dann dementsprechend Deine Balken bewegen.

Gruß KlaDi.


----------



## BLOEBAUM (29. März 2007)

Hallo,

hier ein Beispiel für eine Tastenabfrage innerhalb eines Listeners:

jTDatum.addKeyListener(new java.awt.event.KeyAdapter() {
		public void keyPressed(java.awt.event.KeyEvent e) {

// Welche Taste wurde gedrückt? 
					int keyCode = e.getKeyCode();
// Tasten abfragen: hier z. B. Taste Enter oder Taste Pfeil nach unten
					if (keyCode == KeyEvent.VK_ENTER || keyCode == KeyEvent.VK_DOWN)

Dazu brauchst du den "import java.awt.event.KeyEvent"


----------



## MeinerEiner_80 (29. März 2007)

Moin!
Wie wärs denn damit?

```
import java.awt.event.*;
import javax.swing.*;

public class TestPanel extends JFrame{
    boolean aPressed = false;
    boolean sPressed = false;
    
    public TestPanel(){
        JTextField field = new JTextField();
        this.getContentPane().add(field);
        field.addKeyListener(new KeyListener(){

            public void keyPressed(KeyEvent ev) {
                if(ev.getKeyCode() == 65 && sPressed){
                    System.out.println("a gedrückt und s gedrückt gehalten");
                }
                else if(ev.getKeyCode() == 83 && aPressed){
                    System.out.println("s gedrückt und a gedrückt gehalten");
                }
                else if(ev.getKeyCode() == 65){
                    System.out.println("a gedrückt");
                    aPressed = true;
                }
                else if(ev.getKeyCode() == 83){
                    System.out.println("s gedrückt");
                    sPressed = true;
                }
            }

            

            public void keyReleased(KeyEvent ev) {
                if(ev.getKeyCode() == 65){
                    System.out.println("a released");
                    aPressed = false;
                }
                else if(ev.getKeyCode() == 83)
                    System.out.println("s released");
                    sPressed = false;
                
            }

            public void keyTyped(KeyEvent ev) {
                
            }
            
        });
        
        
    }
    public static void main(String[] args){
        
            TestPanel panel = new TestPanel();
            panel.setSize(200,200);
            panel.setVisible(true);
            
        
        
    }
}
```


----------



## pria (29. März 2007)

Erst mal Danke , aber ihr habt das Problem nicht verstanden.
Ich habe bereits einen Listener , aber der kann nur eine Tastatureingabe auf einmal verarbeiten.
Ich will aber , das zwei Leute gleichzeitig die Balken bewegen können, aber wenn eine Taste gedrückt ist , nimmt er keine Anderen Tasten mehr an und somit muss erst gewartet werden , bis die Taste losgelassen wurde.


----------



## MeinerEiner_80 (30. März 2007)

Moin!


pria hat gesagt.:


> Ich will aber , das zwei Leute gleichzeitig die Balken bewegen können, aber wenn eine Taste gedrückt ist , nimmt er keine Anderen Tasten mehr an und somit muss erst gewartet werden , bis die Taste losgelassen wurde.



So wie ich das sehe, reagiert er immer auf die letzte gedrückte Taste, und wenn eine andere davor noch gedrückt ist, wird auf diese nicht mehr reagiert.
In meinem Beispielcode wird das so gelöst, das man sich die Tasten davor gemerkt hat.
Und laut deiner Beschreibung sollte das ja bei deinem Problem helfen..., oder?

*grüssle*
MeinerEiner


----------



## pria (31. März 2007)

Mhh , nee , nicht wirklich.
Ich poste am besten mal meinen Code , wenn ich zeit hab.


----------

