E muito comum encontrar nos foruns especializados em Java a seguinte questao: "Como eu faco para limitar o tamanho de um JtextField?". Ocorre um certo desapontamento dos iniciantes na linguagem por nao haver um metodo chamado setMaxLenght(x). Ou ainda com os que trabalham visualmente, procurar a propriedade no componente que limitaria o tamanho maximo de caracteres e nao encontrar. Ai programadores que vieram do Delphi por exemplo dizem "O Delphi e muito melhor, blablabla...". So digo uma coisa: Revejam seus conceitos sobre o que e Java.A verdade e que o componente JTextField e definido sobre um modelo de documento que por padrao e chamado PlainDocument. Portanto, para para ter o controle sobre o JTextField devemos criar uma sub classe de PlainDocument, sobrescrever alguns metodos dela e trocar o modelo do JTextField para este novo.Minha intencao nao e entrar a fundo neste assunto, mas sim dar uma solucao principalmente pra quem esta trabalhando visualmente e nao quer ficar editanto codigo a todo momento.Entao vamos la, primeiramente crie a seguinte classe no seu projeto:import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.PlainDocument;public class JTextFieldLimit extends PlainDocument { private int limit; // optional uppercase conversion private boolean toUppercase = false; private int maximo = 500; public JTextFieldLimit(int limit) { super(); if (limit == 0) this.limit = maximo; else this.limit = limit; } public JTextFieldLimit(int limit, boolean upper) { super(); if (limit == 0) this.limit = maximo; else this.limit = limit; toUppercase = upper; } @Override public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { if (str == null) { return; } if ((getLength() + str.length()) <= limit) { if (toUppercase) { str = str.toUpperCase(); } super.insertString(offset, str, attr); } }}Esta classe nao e nenhuma novidade e pode ser encontrada em varios sites pela internet (na verdade fiz algumas mudancas nela). O que ela faz e permitir a limitacao de caracteres e opcionalmente fazer a conversao para maiusculas. Mas o problema e que pra cada JTextField criado, temos que chamar o metodo setDocument passando essa classe e os parametros. Entao para resolver este problema, crie o seguinte metodo na classe onde estao seus campos de texto: public void preparaForm() { // JTextFields limitados e com maiusculas for (Component c : this.getComponents()) { if (c instanceof JTextField) { ((JTextField) c).setDocument(new JTextFieldLimit(((JTextField) c).getColumns(), true)); } } }Este metodo deve ser chamado sempre antes de exibir o seu formulario. Ele vai verificar cada componente do formulario e caso este seja do tipo JTextField, sera configurado para utilizar o modelo de documento apresentado. Mas onde vou definir o limite de caracteres para cada campo? Observe que o primeiro parametro passado para o documento e: ((JTextField) c).getColumns(). Visualmente voce podera definir este numero na propriedade column do componente. Mas porque essa propriedade? Isto esta parecendo uma bela gambiarra... Fique tranquilo, a propriedade column e apenas um numero usado para calcular o tamanho preferido para a largura do campo. Se ele for zero, o tamanho preferido sera qualquer um dependendo da implementacao do objeto. Isto e, voce define a largura visualmente utilizando seu gerenciador de layout preferido e pouco importara o valor definido para a