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]
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();
}
[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=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()