Действительно ли необходимо переопределить remove ()?

жен ограничить количество символов в JTextField. Для этого я использовал следующий код, но проблема в том, что я передаю данные в JTextField с помощью виртуальной клавиатуры. Таким образом, смещение всегда равно 0. Когда я ввожу больше указанного количества символов, оно сбрасывает поле и начинает делать это с самого начала. Например, если мой лимит составляет 3 символа, и я ввожуxyz0 мое ограниченное текстовое поле читает символ доz а затем очищает поле и перезапускает снова. Так что я остался с0 в поле. Код выглядит следующим образом.

  public class JTextFieldLimit extends PlainDocument {
  private int limit;  
  public JTextFieldLimit(int limit) {  
   super();  
   this.limit = limit;  
   }  
    @Override  
  public void insertString( int offset, String  str, AttributeSet attr ) throws   BadLocationException {  
    if (str == null) return;  
            System.out.println("from document helper getLength():"+getLength());  
            System.out.println("from document helper str.length():"+str.length());  
            System.out.println("from document helper str:"+str);  
            System.out.println("from document helper attr:"+attr);  
            System.out.println("from document helper offset:"+offset);  
    if ((getLength() + str.length()) <= limit) {  
      super.insertString(offset, str, attr);  
    }  
  }  
}  

Ответы на вопрос(1)

Ваш ответ на вопрос