[Java] JTextField Zeichenlänge begrenzen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Tomasch, 20. Februar 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 20. Februar 2009
    JTextField Zeichenlänge begrenzen

    Hab ein Problem, und zwar möchte ich die Länge eines Textfeldes auf eine Ziffer (also ein Zeichen) beschränken. Ich hab das Textfeld schon soweit beschränkt, dass nur Zahlen eingegeben werden können (außer die 0), also alle Zahlen von 1-9.
    Jetzt möchte ich in den KeyListener eigentlich nur noch einbauen, dass die weiteren eingaben verworfen werden, sobald schon etwas im Textfeld steht (außer natürlich Backspace und Delete), aber ich weiß nicht wie ich auf den Inhalt des Textfeldes zugreifen kann, da es sich dabei ja um ein Array handelt und ich JEDEM Textfeld in diesem Array diesen KeyListener zuordnen möchte.

    Wie schon gesagt: Es handelt sich um ein JTextfield Array mit 81 Textfeldern.
    Code:
    private JTextField[] feld = new JTextField[82];
    Hier wird der KeyListener innerhalb der for-Schleife hinzugefügt:
    Code:
     feld[i].addKeyListener(new KeyAdapter() {
     public void keyTyped(KeyEvent e) {
     char c = e.getKeyChar();
     if (!((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))))
     e.consume();
     if (c == KeyEvent.VK_0)
     e.consume();
     }
     });
    Wie kann ich also jetzt auf den Inhalt der Textfelder zugreifen?

    Hatte mir das so (doof wie ich bin ) gedacht:
    Code:
     if (feld[i].getText().length >= 1)
     e.consume();
    Dabei werd ich ja auch logischerweise gleich mti folgender Fehlermeldung bestraft:
    Code:
    Sudoku.java:70:20: local variable i is accessed from within inner class; needs to be declared final
     if (feld[i].getLength() > 10)
    

    mfg Tomasch
     
  2. 21. Februar 2009
    AW: JTextField Zeichenlänge begrenzen

    Hab selber ne Lösung gefunden:

    Code:
     [COLOR="Red"][B]final int v = i;[/B][/COLOR]
     feld[i].addKeyListener(new KeyAdapter() {
     public void keyTyped(KeyEvent e) {
     char c = e.getKeyChar();
     if (!((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) [COLOR="Red"][B]|| feld[v].getText().length()>=1[/B][/COLOR])
     e.consume();
     if (c == KeyEvent.VK_0)
     e.consume();
     }
     });
    Funktioniert perfekt!
    Jetzt kann man nur noch Zahlen von 1-9 eingeben und auch nur eine Ziffer...
    Restlichen Eingaben werden abgefangen!

    mfg Tomasch
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.