2012-10-25 22 views

Odpowiedz

9

Konstruktor

new JTextField("Enter text here",8); 

ustawia liczbę widocznych kolumn do 8, ale nie ograniczają się od wprowadzania bardziej.

Do ograniczenia długości wejściowej można użyć wartości DocumentFilter.

+1

Można znaleźć dobry przykład jak to zrobić tutaj (http://www.java2s.com/Tutorial/Java/0240__Swing/LimitJTextFieldinputtoamaximumlength.htm). – Designpattern

10

Aktualny kod nie określa maksymalnej długości, a raczej określa liczbę widocznych kolumn.

Aby ograniczyć maksymalną długość danych, można ustawić niestandardowy Document dla pola tekstowego, które nie zezwala uzupełnień, które rozkładają maksymalne ograniczenie Długość:

public final class LengthRestrictedDocument extends PlainDocument { 

    private final int limit; 

    public LengthRestrictedDocument(int limit) { 
    this.limit = limit; 
    } 

    @Override 
    public void insertString(int offs, String str, AttributeSet a) 
     throws BadLocationException { 
    if (str == null) 
     return; 

    if ((getLength() + str.length()) <= limit) { 
     super.insertString(offs, str, a); 
    } 
    } 
} 

Następnie ustawić pole tekstowe, aby skorzystać z tej dokument:

text2.setDocument(new LengthRestrictedDocument(8)); 
0

Wystarczy rozszerzyć klasę JTextField i zastąpić KeyReleased zdarzenia w konstruktorze i skierować go na nową metodę, która sprawdza długość:

package gui; 

import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 

import javax.swing.JTextField; 

public class RecordClassTextField extends JTextField { 

    public RecordClassTextField() { 
     this.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyReleased(KeyEvent e) { 
       cleanText(); 
      } 
     }); 
    } 

    private void cleanText() 
    { 
     if(this.getText().length() > 17){ 
      System.out.println("Over 17"); 
     } 
    } 
} 
0

Jestem pewien, że to ci pomoże. Właśnie dodałem KeyListener typu keyTyped do JTextField. KeyListener działa, gdy użytkownik wprowadza znaki o wartości większej niż zdefiniowany limit w instrukcji if.

text2 = new JTextField("Enter text here",8); 
text2.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      if (text2.getText().length() == 8) { 
       e.consume(); 
      } 
     } 
    });