o unico metodo que conheco (e inclusive já usei) é uma gambiarrazinha… =P
voce pode adicionar um key listener ao textfield, e ler o tamanho do texto nele a cada tecla pressionada:
voce vai reparar que o texto que é “pego” dentro do metodo keyTyped é sempre anterior ao texto atual(com o caractere que provocou o evento), por isso coloquei esse “+ 1”. mas aí você usa do jeito que for melhor pra voce…
espero ter ajudado
H
HKJavaPJ
Qrd…
Vc pode descer o nivel ate o Model do TextField, tive problema semelhante que foi resolvido trabalhando com o PlainDocument…
Ai vai um exemplo:
importjavax.swing.JFrame;importjavax.swing.JTextField;importjava.awt.*;importjavax.swing.text.PlainDocument;importjavax.swing.text.AttributeSet;importjavax.swing.text.BadLocationException;/** * Exemplo de Text */publicclassTesteextendsJFrame{publicTeste(){try{jbInit();}catch(Exceptionex){ex.printStackTrace();}this.setSize(50,100);this.setVisible(true);}publicstaticvoidmain(String[]args){Testeteste=newTeste();}privatevoidjbInit()throwsException{NovoPlainDocumentplainDocument=newNovoPlainDocument();plainDocument.setColunas(10);jTextField1.setDocument(plainDocument);this.getContentPane().add(jTextField1,java.awt.BorderLayout.CENTER);}privateJTextFieldjTextField1=newJTextField();}/** * Classe que herda o PlainDocument */classNovoPlainDocumentextendsPlainDocument{privateintcolunas=-1;//metodo sobreescrito do plaindocumentpublicvoidinsertString(intoffs,Stringstr,AttributeSeta)throwsBadLocationException{if(getLength()<colunas){super.insertString(offs,str,a);}return;}publicvoidsetColunas(intcolunas){this.colunas=colunas;}publicintgetColunas(){returncolunas;}}