# Java Tastatureingaben abfangen ohne Focus!



## Funresort (14. Januar 2013)

Hi Leute,

würde gerne meine Tastatureingaben abfangen um diese für meine Anwendung zu benutzen, da leider mein Focus immer verloren geht sobald ich wo anderst hinklicke :/ wollte ich fragen ob es da eine andere möglichkeit gibt. 

Es ist wichtig:
- Das ich weis ob ein Key gedrückt wird
- Wann er losgelassen wird
- Es muss eine Art Event sein, brauche Dauerabfragen
- Im Prinzip sowas wie der Keylistener


mfg. Chris


```
panel.registerKeyboardAction(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
            	
            }
        }, KeyStroke.getKeyStroke('D'), JComponent.WHEN_IN_FOCUSED_WINDOW);
```

Das hab ich bis jetzt, kann da aber leider nicht abfangen ob ein Key dauergedrückt oder nur kurz gedrückt wurde


----------



## youza (15. Januar 2013)

Ich weiß jetzt nicht ob ich des richtig verstanden habe aber ich hab des mal ganz normal mit dem KeyListener ausprobiert:

```
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.JTextField;


public class testKey extends JFrame implements KeyListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private boolean released;
	private Date start_time;

	public static void main(String []args){
		new testKey();
	}
	public testKey(){
		released = true;
		JTextField jtf = new JTextField();
		
		jtf.addKeyListener(this);

		jtf.setSize(200,20);

		this.add(jtf);
			
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.pack();
		this.setVisible(true);
		
		
	}
	@Override
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		if(released)
		{
			start_time = new Date();
			released = false;
		}
	}

	@Override
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		released = true;
		Date date = new Date();
		System.out.println("Key " + arg0.getKeyChar() + " pressed for "+ (date.getTime()-start_time.getTime()) + " Milliseconds" );
	}

	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub

	}
	

}
```


SORRY HAB DES GRAD NOCHMAL DURCHGELESEN ist a schmarrn was ich da geschrieben hab du willst es ja auf nem Panel oder sowas oder ^^


----------

