Lógica com Avancar e Recuar ((Resolvido))

1 resposta
H

Pessoal, tenho por exemplo 5 jTextfield, no qual o usuario determina qual campo deve ser ativo ou não.

Vamos supor que o jTextfield 2 e jTextfield 4 não deve ser preenchidos, sendo assim os proximos jTextfield recebendo o foco,

Para Avançar:
quando recebe o jTextfield2 recebe o foco ele verifica que este campo não está editable fazendo assim um jTextfield3.requestFocus() e o mesmo ocorre com o jTextfield4.

até ai tudo blz. o problema é o seguinte

E para recuar?
como eu conseguiria fazer para quando eu apertasse a tecla de recuar do jTextfield3 para o jTextfield2, o mesmo verificasse se o jTextfield2 está ativo e vendo que não está, ele solicitasse o focus para o jTextfield1 ?

alguém pode me dar uma luz nisso? pois vou trabalhar com mais de 10 campos e não estou conseguindo desenvolver essa lógica

Obrigado desde já! qualquer ajuda é bem vinda!

1 Resposta

H

segue forma que consegui fazer:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication2;

import java.util.ArrayList;
import javax.swing.JComponent;
import javax.swing.JTextField;

/**
 *
 * @author Rodrigo-PC
 */
public class AvancarRecuar {

    ArrayList<JComponent> listaComp = new ArrayList<JComponent>();

    public ArrayList<JComponent> getListaComp() {
        return listaComp;
    }

    public void setListaComp(ArrayList<JComponent> listaComp) {
        this.listaComp = listaComp;
    }

    public void Avancar(JComponent componente) {
        int posicao = listaComp.indexOf(componente);
        for (int i = posicao + 1; i < listaComp.size(); i++) {
            if (listaComp.get(i).isEnabled()) {
                if (listaComp.get(i) instanceof JTextField) {
                    if (((JTextField) listaComp.get(i)).isEditable()) {
                        listaComp.get(i).requestFocusInWindow();
                        break;
                    }
                }
            }
        }
    }

    public void Recuar(JComponent componente) {
        int posicao = listaComp.indexOf(componente);
        for (int i = posicao - 1; i >= 0; i--) {
            System.out.println(i);
            if (listaComp.get(i).isEnabled()) {
                if (listaComp.get(i) instanceof JTextField) {
                    if (((JTextField) listaComp.get(i)).isEditable()) {
                        listaComp.get(i).requestFocusInWindow();
                        break;
                    }
                }
            }
        }
    }

}

Abraços a todos

Criado 12 de janeiro de 2014
Ultima resposta 12 de jan. de 2014
Respostas 1
Participantes 1