Hallo Forum,
ich habe folgendes großes Problem:
Ich entwickele für eine Anwendung eine eigene GUI.
Das ganze Fust auf einem Window und der Rest wird entsprechend selbst umgesetzt.
Um Eingaben in meinen Feldern tätigen zu können nutze ich einen KeyListener ... dummerweise hat der Schwierigkeiten mit den deutschen Tasten auf denen die Umlaute liegen (also ä, ö und ü).
Mein Ansatz der GUI fußt darauf, dass ich den KeyCode interpretiere der mir vom Listener gegeben wird. Aber eben diese Tasten verhalten sich absolut daneben. Weder senden sie einen richtigen KeyCode, noch werden alle Methoden des Listeners aufgerufen, noch ist das Verhalten unter verschiedenen Betriebssystemen gleich.
Ich habe hier mal einen Beispielcode der mein Problem zeigt:
Wenn man in dem Textfeld das dann erscheint tippt komtm folgende Ausgabe (ich tipp erst a, dann ö)
unter Linux
und unter Windows XP:
Kann mir jemand sagen wie ich dem KeyListener das Verhalten austreibe?
Danke!
Sparrow
ich habe folgendes großes Problem:
Ich entwickele für eine Anwendung eine eigene GUI.
Das ganze Fust auf einem Window und der Rest wird entsprechend selbst umgesetzt.
Um Eingaben in meinen Feldern tätigen zu können nutze ich einen KeyListener ... dummerweise hat der Schwierigkeiten mit den deutschen Tasten auf denen die Umlaute liegen (also ä, ö und ü).
Mein Ansatz der GUI fußt darauf, dass ich den KeyCode interpretiere der mir vom Listener gegeben wird. Aber eben diese Tasten verhalten sich absolut daneben. Weder senden sie einen richtigen KeyCode, noch werden alle Methoden des Listeners aufgerufen, noch ist das Verhalten unter verschiedenen Betriebssystemen gleich.
Ich habe hier mal einen Beispielcode der mein Problem zeigt:
Code:
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class GermanKey extends Frame implements KeyListener {
TextField textField;
public GermanKey() {
super("Test German Key");
textField = new TextField("Test German Key");
textField.addKeyListener(this);
add(textField);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void keyPressed(KeyEvent e) {
System.out.println("keyPressed: char: " + e.getKeyChar());
System.out.println("keyPressed: keyCode: " + e.getKeyCode());
}
public void keyReleased(KeyEvent e) {
System.out.println("keyReleased: char: " + e.getKeyChar());
System.out.println("keyReleased: keyCode: " + e.getKeyCode());
}
public void keyTyped(KeyEvent e) {
System.out.println("keyTyped: char: " + e.getKeyChar());
System.out.println("keyTyped: keyCode: " + e.getKeyCode());
}
public static void main(String[] args) {
new GermanKey();
}
}
Wenn man in dem Textfeld das dann erscheint tippt komtm folgende Ausgabe (ich tipp erst a, dann ö)
unter Linux
Code:
keyPressed: char: a
keyPressed: keyCode: 65
keyTyped: char: a
keyTyped: keyCode: 0
keyReleased: char: a
keyReleased: keyCode: 65
keyReleased: char: ö
keyReleased: keyCode: 0
und unter Windows XP:
Code:
Event-Char: a
Key Pressed = 65
Key Typed = a
Key Released = 65
Key Released (char) = a
Event-Char: ÷
Key Pressed = 0
Key Typed = ÷
Key Released = 0
Key Released (char) = ÷
Kann mir jemand sagen wie ich dem KeyListener das Verhalten austreibe?
Danke!
Sparrow