JtextField SEM enter ou tab

5 respostas
Salax

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

5 Respostas

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).

Salax

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).

Vou tentar, se conseguir aviso, obrigado.

ViniGodoy

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).

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).

Salax
ViniGodoy:
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).

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).

Boas...

teria como eu implantar esse evento nessa classe?

/*
 * 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="[telefone removido]";// 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;
    }
}
Salax

Up.

Criado 26 de novembro de 2013
Ultima resposta 10 de dez. de 2013
Respostas 5
Participantes 3