# Keine Umlaute in JTextField



## homer65 (9. Mai 2007)

Hallo Leute,
könnte mal eure Hilfe gebrauchen. Ich habe Probleme mit JTextField. Wenn ich unter Linux JTextField benutze, kann ich dort keine Umlaute eingeben, d.h kein ä,ü und ö. Das gleiche gilt für JTextArea. Unter Windows hatt das immer funktioniert. Weß jemand woran das liegen könnte. Besten Dank im Voraus.
Christian


----------



## Wildcard (9. Mai 2007)

Falsche Schriftart ausgewählt?


----------



## SlaterB (9. Mai 2007)

wenn du so allgemein fragst, dann musst du auch mit dieser Frage rechnen:
funktionieren die Umlaute denn in anderen Editoren?
hast du vielleicht eine englische Tastaturbelegung?
teste mal die Zeichen (),;.: +#*~ usw., funktionieren die?


----------



## JPKI (9. Mai 2007)

Gib mal die Wortfolge "*Zwei Zwickauer Zwitschern*" in irgendeinen Editor ein. Wenn da anstatt des *Z* ein *Y* steht, hast du eine englische Tastaturbelegung.


----------



## homer65 (9. Mai 2007)

@Wildcard: Wie wähle ich denn eine Schriftart aus?
@JPKI: Wenn ich ein Z auf der Tastatur eingebe erscheint auch ein Z auf dem Bildschirm.
@SlaterB: Im vi kann ich ohne Probleme ä,ü und ö eingeben. In jedit, was ein in Java geschriebener Editor ist, nicht.


----------



## SlaterB (9. Mai 2007)

und nochmal Entschuldigung wenn schon bekannt,
aber selber schuld wenn du deinen Kenntnisstand nicht angibst:

google
http://www.google.de/search?hl=de&q=java+umlaute+linux&meta=
viel zu lesen, auf die Schnelle aber nix wirklich lösendes zu finden,
außer
http://forum.ubuntuusers.de/topic/69516/


----------



## homer65 (9. Mai 2007)

Also ich habe hier Java 1.5. So einfach 1.6 einzusetzen geht auch nicht.


----------



## thE_29 (9. Mai 2007)

Pa.. das ist doch gar nix!

Unter einem Linux welches auf kyrillisch gesetzt ist (sprich Bulgarien, Russland, etc.) hat man dann bei der Eingabe statt den kyrillischen Zeichen ARABISCHE ZEICHEN!!

Selten so einen Bug gesehen... Habe nach 1 Tag googlen nen Ansatz gefunden und dann ne Lösung gemacht.. Man muss dort nämlich den inputmethoddescriptor überschreiben!

Man muss ein Jar File ins JRE/include Verzeichnis legen!

Dieses Jar File besteht aus 2 Klassen!

Einmal eine Klasse die InputMethodDescriptor implementiert! Und eine 2te Klasse die bei createInputMethod die 2te Klasse zurückgibt, welche InputMethod implementiert!

Dort muss man in der Methode dispatchEvent auf keyEvent abfragen und dort kriegt man (in meinem Fall) einen komplett falschen Hex Code! Den muss man halt umändern und dann zurückgeben..

Desweieteren muss im Jar File noch in der Ordnerstrutktur META-INF/services eine Datei liegen die java.awt.im.spi.InputMethodDescriptor lautet und in dieser Datei steht der Name zu der Klasse die InputMethodDescriptor implementiert!

So kann man halt auch überwachen ob die richtigen Codes gesetzt sind!

Achja in der Klasse die den InputMethodDescriptor implementiert, muss man bei getAvailableLocales die Locale zurückgeben, die man gerne überschreiben will! 
Definiert man hier eine eigene muss, man am besten gleich bei der ganzen Klasse (hier ein JFrame) das hier sagen: frame.getInputContext().selectInputMethod(new java.util.Locale("myLocale"));


Also, wennst Zeit hast, probier das mal und schau ob überhaupt der richtige Code geschickt wird oder ob (so wie bei mir) einfach schon ein kompletter Nonsinn geschickt wird..


----------



## homer65 (9. Mai 2007)

@thE_29 
Also das hört sich kompliziert an. Und ehrlich gesagt habe ich es auch nicht verstanden. Also dann doch lieber die Java 1.6 Variante.


----------

