JtextField SEM enter ou tab

Ola!
Não encontrei no fórum exemplos.

Possuo um campo (JtextField), que tem o limite de 04 caracteres e ao ser preenchido com o valor máximo ele passaria para o próximo sem precisar usar enter ou tab.

Poderia me ajudar?

Att.
Salax

Você pode monitorar os eventos de teclado (KeyEvent) nos JTextFields, e utilizar o método transferFocus() para focar o próximo campo da janela, caso tenha atingido o limite do campo.
Faça a checagem do limite no método keyTyped() do handler de eventos (KeyAdapter).

[quote=lavreh]Você pode monitorar os eventos de teclado (KeyEvent) nos JTextFields, e utilizar o método transferFocus() para focar o próximo campo da janela, caso tenha atingido o limite do campo.
Faça a checagem do limite no método keyTyped() do handler de eventos (KeyAdapter). [/quote]

Vou tentar, se conseguir aviso, obrigado.

[quote=lavreh]Você pode monitorar os eventos de teclado (KeyEvent) nos JTextFields, e utilizar o método transferFocus() para focar o próximo campo da janela, caso tenha atingido o limite do campo.
Faça a checagem do limite no método keyTyped() do handler de eventos (KeyAdapter). [/quote]

Eventos são péssimas formas de trabalhar com JTextFields. O ideal é usar o Document.

Caso contrário, ele terá problemas com CTRL+V (que só gera 1 keytype) ou com o mouse (que não gera evento de tecla).

[quote=ViniGodoy][quote=lavreh]Você pode monitorar os eventos de teclado (KeyEvent) nos JTextFields, e utilizar o método transferFocus() para focar o próximo campo da janela, caso tenha atingido o limite do campo.
Faça a checagem do limite no método keyTyped() do handler de eventos (KeyAdapter). [/quote]

Eventos são péssimas formas de trabalhar com JTextFields. O ideal é usar o Document.

Caso contrário, ele terá problemas com CTRL+V (que só gera 1 keytype) ou com o mouse (que não gera evento de tecla).[/quote]

Boas…

teria como eu implantar esse evento nessa classe?

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.scontrole.Ascii;

import java.awt.event.KeyEvent;
import javax.swing.JTextField;
/**
*

  • @author Salamanca
    */
    public class NData extends JTextField{

     private int maximoCaracteres=-1;// definição de -1
     // como  valor normal de um textfield sem limite de caracters
     public NData() {
            super();
            addKeyListener(new java.awt.event.KeyAdapter() {
                 @Override
    public void keyTyped(java.awt.event.KeyEvent evt) {
                 jTextFieldKeyTyped(evt);}});
    }
    
    public NData(int maximo) {   
         super();
         setMaximoCaracteres(maximo);// define o tamanho máximo
          //que deve ser aceito no jtextfield que foi recebido no  construtor
          addKeyListener(new java.awt.event.KeyAdapter() {
    @Override
    public void keyTyped(java.awt.event.KeyEvent evt) {
             jTextFieldKeyTyped(evt);}});
    }
    
    private void jTextFieldKeyTyped(KeyEvent evt) {
    
         String caracteres="0987654321";// lista de caracters aceitos
         if(!caracteres.contains(evt.getKeyChar()+"")){// se o caracter que gerou o evento estiver não estiver na lista
         evt.consume();//aciona esse propriedade para eliminar a ação do evento
         }
         if((getText().length()>=getMaximoCaracteres())&&(getMaximoCaracteres()!=-1)){
         //if para saber se precisa verificar também o tamanho da string do campo
         // maior ou igual ao tamanho máximo, cancela e nao deixa inserir mais
         evt.consume();
         setText(getText().substring(0,getMaximoCaracteres()));
         // esta linha acima é para remover os caracters inválidos caso o usuário tenha copiado o 
         //conteúdo de algum lugar, ou seja, com tamanho maior que o definido
         }//fim do if do tamanho da string do campo
    
     }
    

    public int getMaximoCaracteres() {
    return maximoCaracteres;
    }
    public void setMaximoCaracteres(int maximoCaracteres) {
    this.maximoCaracteres = maximoCaracteres;
    }
    }

[/code]

Up.