Internes Event-handling in TextField/JTextField

Tueftler

Mitglied
Hallo zusammen,
GUI: Ein Textfeld, ein Button
zu lösendes Problem: Wird der Button betätigt, sollen die Tastatureingaben von deutsch auf griechisch umgestellt werden bzw. von griechisch auf deutsch.
Mangels JNI-Wissen, kann ich das nicht über die Tastaturbelegung realisieren. Mein bisheriger Versuch mittels KeyListener (wandler ist eine HashMap):

public void keyPressed(KeyEvent e){
char original= (char) e.getKeyChar();
Character code=wandler.get(original);
if(! (sprachFlag && code==null))
this.setText(this.getText()+code);
else
this.setText(this.getText()+original);
}


Das klappt zwar, aber der deutsche Buchstabe wird mitausgegeben, Eingabe 'P' wird z.B. als 'P' plus Pi ausgegeben. Da das 'this' von TextField abgeleitet ist und ich alle Key-Events überschrieben habe, wird die Anzeige der Tastatureingabe intern im Textfeld wohl über ein anderes Event gesteuert. Aber welches? Kann jemand helfen?
 
[ot]Bitte schreibe Java-Code innerhalb von
Java:
-Tags, so wird der Code lesbarer, danke! :)[/ot]

[quote="Tueftler, post: 1038732"]aber der deutsche Buchstabe wird mitausgegeben, Eingabe 'P' wird z.B. als 'P' plus Pi ausgegeben. .... wohl über ein anderes Event gesteuert. Aber welches? Kann jemand helfen?[/QUOTE]

Ein Textfield hat einen StandardListener damit es seinen Funktionalität erfüllen kann.
Wenn ein Event geworfen wird werden alle Listener darüber informiert, auch der StandardListener. Mittels der Methode "consume()" kannst du verhindern das dieser das Event bearbeitet.
Nähere Infos zu dieser Methode findest du in der Java Dokumentation
 

Zurück
Oben