# Bildschirmtastatur



## JanHH (24. Jan 2007)

Hallo,

habe ein Problem: Ein Programm enthält (u.a.) Textfelder (JTextArea), und die Eingabe in diese Felder soll alternativ zur "normalen" phyischen Tastatur auch mittels einer einblendbaren Bildschirmtastatur erfolgen (so wie z.B. diese Dinger die man bei PDAs hat). Die Frage ist nur, wie macht man das. Eine Bildschirmtastatur zu programmieren mit Buttons, die bei Klick dann KeyEvents erzeugen, ist ja nicht so schwierig, aber wie wendet man diese Events dann auf JTextAreas an? dispatchEvent() tut jedenfalls gar nix. Weiss jemand wie's geht? Ist der Ansatz mit KeyEvents evtl komplett falsch?

Gruß und Danke
Jan


----------



## The_S (24. Jan 2007)

Einfach an das JTextArea mittels append anhängen!?


----------



## JanHH (25. Jan 2007)

Key-Events sind die deutlich bessere Lösung (wie hängt man z.b. backspace an den Text an?), und ausserdem soll nicht nur eine TextArea damit bedient werden, sondern noch andere Teile des Programms. Eine Lösung mit KeyEvents ist viel flexibler und vom Klassendesign auch besser passend bzw einfacher integrierbar.

Ich habs mittlerweile allerdings auch hinbekommen, gebe gerne darüber Auskunft wenn Interesse besteht.

Gruß
Jan


----------



## André Uhres (28. Jan 2007)

JanHH hat gesagt.:
			
		

> ..Ich habs mittlerweile allerdings auch hinbekommen, gebe gerne darüber Auskunft wenn Interesse besteht..


Stell's einfach mal hier rein. Europa ist gross, und irgendwann wird's schon jemand interessieren  :wink:


----------



## JanHH (3. Feb 2007)

Ganz vergessen. Also:

Grundsätzlich ist es richtig, KeyEvent-Objekte zu erzeugen und der Komponente, die angesprochen werden soll, diese mit dispatchEvent() zu übergeben. Das "Problem" ist nur, dass java sehr sensibel darauf regaiert, dass es die "richtigen" KeyEvents sind. Man muss die "echten" also exakt nachbauen, auch die Reihenfolge (KeyTyped, KeyPressed, KeyReleased, glaub ich). Die Frage ist dann, wie erfährt man wie "richtige" KeyEvents aussehen? Dazu habe ich mit den call stack beim drücken einer Taste mal genauer angeschaut und dabei eine Funktion (ich bin mir nicht mehr exakt sicher wie sie heisst, aber ich glaube so) "protected processKeyEvent" gefunden. Dann habe ich eine Klasse von JTextArea abgeleitet, die nix weiter macht als diese Funktion zu überschreiben:


```
protected void processKeyEvent(KeyEvent e)
{
   super.processKeyEvent(e);
   System.out.println(e);
}
```

Dadurch wird dann alles, was an Events an die JTextArea geschickt wird, angezeigt, und man kann es in Ruhe analysieren und nachbauen. Vor allem bei Sonderzeichen und Kombinationen aus Tasten nicht so einfach . Aber problemlos machbar.

Gruß
Jan


----------

