AWT Mehrere Tastatureingaben verarbeiten

faraday

Mitglied
Hallo liebe Java-affinen Menschen,
und zwar stehe ich vor folgendem Problem: Ich möchte mithilfe des KeyListeners zwei Eingaben verarbeiten, die aber nicht gleichzeitig stattfinden.

Ich habe ein JPanel, das ich auswählen kann, und dort kann ich Zahlen eingeben. Es sollen aber nicht nur Zahlen von 0-9 möglich sein (das ist bereits implementiert), sondern 0-99. So etwas bedarf ja zwei Eingaben hintereinander. Gibt es da eine clevere Implementierung über Java?

Kurz mein Minimalbeispiel für die Zahlen 0-9 einer inneren Klasse:

Java:
[...]
class MyKeyListener extends KeyAdapter() {
  @Override
  public void keyReleased( KeyEvent ke ) {
    String legalNums = "0123456789";
    char num = ke.getKeyChar();
    int ind = legalNums.indexOf( num );

    if( ind >= 0 ) {
        label.setText( Integer.toString( ind ) );
    }
  }
}
[...]

Vielen Dank für eure Hilfe und liebe Grüße
fara
 
Wo genau liegt das Problem?
Statt einfach nur den Text des Labels neuzusetzen solltest du den bisherigen Text einfach auslesen und die neue Ziffer dranhängen.
 
Stimmt, ich gebe zu, ich hab mein Problem nicht wohl gestellt. Meine Vorstellung ist etwa so: Wenn der User innerhalb einer kurzen Zeit zwei Integer eintippt, soll die entsprechende Konkatenation dieser Zahlen in das Label geschrieben werden. Ist diese Zeitspanne überschritten, wird mit einer Eingabe die alte überschrieben.

Vielleicht ist das auch gar nicht so sinnvoll, aber so stell ich mir das jedenfalls gerade vor. Kurz zu meinem Projekt: Es handelt sich um einen Sudoku-Solver und dessen GUI. Das Label entspricht einem einzelnen Feld. Ich möchte jetzt statt 3^2 Sudokus auch diejenigen höherer Dimension (also n^2) zulassen, was Eingaben von 1 bis n^2 fordert.

Liebe Grüße
fara
 
Ist diese Zeitspanne überschritten, wird mit einer Eingabe die alte überschrieben.
Ein solches Verhalten würde mich eher stutzig machen. Woher soll ich als User wissen wie viel Zeit ich mir lassen darf damit die Eingabe angehängt wird und nicht überschrieben?

Ich würde bei dem normalen Verhalten bleiben. Was getippt wird wird auch eingefügt (natürlich mit deiner Beschränkung auf Zahlen, und vielleicht die Länge)
 
Ich würde auch keinen Timer setzen. Soll eine Eingabe korregiert werden, kann das doch über die Return-Taste geschehen. Die Länge / den max Wert kannst du dann mittels einer einfachen if-Anweisung überprüfen.
 

Zurück
Oben