Customizar uma jTextField

[b]Ola Pessoal,

Como faço para customizar uma jTextField como o tamanho de 11 caracteres numericos?
Para que o componente não aceite que o usuario digite mais do que os 11 caracteres, a IDE que estou
utilizando é o Netbeans 5.5.1, mas se porventura alguem quiser passar o codigo de outra IDE
como Eclipse, e dentre outras não tem problema. “Desde já agradeço a colaboração de todos!!!”
[/b]

Dê uma olhada nos artigos e tutoriais do GUJ. Lá você vai encontrar o seguinte:

Controlando um JTextField
Como limitar caracteres de um JTextField? Você vai aprender a resolver este e outros problemas neste tutorial.

Um dos jeitos de resolver é colocando dentro do evento do JtextField

Por exemplo dentro do evento keyTyped(KeyEvent e)

Colocar o seguinte codigo para bloquear letras:

if (!Character.isDigit(e.getKeyChar())) { e.consume(); }

e para limitar o tamanho utilizar, dentro do mesmo metodo o seguinte código

if (jTextFieldNome.getText().length() >= tamanhoDesejado) e.consume();

Amigo faça assim:

  textField1.setMaxLength(10);

ate +

marciofermino

Este método existe ?

Não encontrei este método para o JTextField, procurei na API.

Na mensagem acima… o colega disse que esta usando NetBeans 5…

existe sim!

marciofermino, onde você achou esse método?

Procurei na API também e não encontrei, então tentei rodar o seguinte código:

[code]import javax.swing.*;

public class Teste {
public Teste() {
JTextField txt = new JTextField(10);
txt.setMaxLength(10);

	JFrame frm = new JFrame("Teste");
	frm.getContentPane().add(txt);
	frm.pack();
	frm.setLocationRelativeTo(null);
	frm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	frm.setVisible(true);
}

public static void main(String args[]) {
	Teste teste = new Teste();
}

}[/code]E não compilou…

EDITADO: versão 1.6.0_03

[quote=gpviani]Um dos jeitos de resolver é colocando dentro do evento do JtextField

Por exemplo dentro do evento keyTyped(KeyEvent e)

Colocar o seguinte codigo para bloquear letras:

if (!Character.isDigit(e.getKeyChar())) { e.consume(); }

e para limitar o tamanho utilizar, dentro do mesmo metodo o seguinte código

if (jTextFieldNome.getText().length() >= tamanhoDesejado) e.consume();[/quote]

Essa forma não funciona se o usuário der Copy&Paste (ele pode fazer isso com o mouse, sem pressionar tecla nenhuma).
Dê uma olhada no tutorial que eu passei lá em cima, ele realmente resolve o problema.

[quote=marciofermino]Amigo faça assim:

  textField1.setMaxLength(10);

ate +[/quote]

Esse método não existe. O que existe é o método setColumns(int), mas ele só tem efeito sobre a aparência do JTextField.

Para quem tem preguiça de seguir o tutorial, o Document que ele ensina a criar já está implementado aqui:
http://www.guj.com.br/posts/list/55106.java#289522

Eu realmente recomendo a leitura do tutorial. É o jeito certo de tratar esse assunto. :wink:

Nem sobre a aparência ele tem efeito, porque ele permite a extrapolação visual do limite de colunas…

Agradeço a todos que postaram as suas mensagens. vou estudar o tutorial e volta mais tarde…

e tambem vou implementar os codigos, que foram passados, muitissimo obrigado!

Nossa. Quase me mijei de rir lendo esta thread.

Tem solução de marte, tem solução de Vênus, tem solução até da PQP. Então vou mandar uma solução para vocês.

A solução deste planeta é: SeuJTextField.setDocument(new FixedLengthDocument(10));

Abraços.

O único problema é que essa classe não existe no JDK.
Talvez você tenha implementado do tutorial do GUJ que citei ali em cima…

[quote=ViniGodoy]O único problema é que essa classe não existe no JDK.
Talvez você tenha implementado do tutorial do GUJ que citei ali em cima…[/quote]

Eu usei isso pela primeira vez a muito tempo, se me lembro bem lá pros idos de 2002, achei o código num livro da O’Reilly, se não me engano o nome dele é Java Swing e infelizmente não pude ler o tutorial do GUJ ainda.

Uma outra coisa é que em nenhum momento eu falei que era ou não incluso na JDK e em nenhum momento eu vi também alguém querendo uma solução que tivesse exclusivamente na JDK.

Eu pequei confesso em não colocar os fontes para ele, desculpe tiagowmm.

De qualquer forma, basta colocar FixedLengthDocument no google que acha fácil ao contrário de setMaxLength() :slight_smile:

Abraços.

Pessoal o adler ta certo a melhor forma e criar um document

[quote=Adler Medrado]Nossa. Quase me mijei de rir lendo esta thread.

Tem solução de marte, tem solução de Vênus, tem solução até da PQP. Então vou mandar uma solução para vocês.

A solução deste planeta é: SeuJTextField.setDocument(new FixedLengthDocument(10));

Abraços.

[/quote]