Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Jtextfield количество символов


Автор: Vofka 14.8.2006, 16:32
Можно ли как-нибудь ограничить количество символов вбиваемых в текст филд например чтобы только 16?

Автор: LSD 14.8.2006, 16:35
Или через DocumentFilter или через JFormatedTextField.

Автор: Vofka 14.8.2006, 16:40
JFormatedTextField какое свойство?

Автор: LSD 15.8.2006, 10:28
Для 4-х символов:
Код
JFormattedTextField formattedTextField = new JFormattedTextField(new MaskFormatter("****"));

Автор: Vofka 15.8.2006, 10:45
Спасибо большое smile 

Автор: Vofka 15.8.2006, 14:41
че то я погоричился когда как решенный вопрос поставил.вопрос еще один остался 4 звездочки это хорошо но если надо допустим 250 символов сделать не все же 250 символов вбивать?  smile 

Автор: LSD 15.8.2006, 16:52
Код
public class LengthFilter extends DocumentFilter
{
  private int currentLength;
  private int maxLength;

  public LengthFilter(int currentLength, int maxLength)
  {
    this.currentLength = currentLength;
    this.maxLength = maxLength;
  }

  public void remove(FilterBypass fb, int offset, int length) throws BadLocationException
  {
    currentLength -= length;
    fb.remove(offset, length);
  }

  public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException
  {
    if((currentLength + string.length()) <= maxLength)
    {
      currentLength += string.length();
      fb.insertString(offset, string, attr);
    }
  }

  public void replace(FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException
  {
    if((currentLength - length + string.length()) <= maxLength)
    {
      currentLength += string.length() - length;
      fb.replace(offset, length, string, attr);
    }
  }
}

Код
JTextField textField = new JTextField();
AbstractDocument doc = (AbstractDocument) textField.getDocument();
doc.setDocumentFilter(new LengthFilter(doc.getLength(), 10));

Автор: Vofka 16.8.2006, 10:08
Спасибо большое!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)