KeyListener

pria

Mitglied
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?
 
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.
 
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"
 
Moin!
Wie wärs denn damit?
Code:
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);
            
        
        
    }
}
 
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.
 
Moin!
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
 
Zurück