Foco e Cursor de um JtextField

1 resposta
G

Opa tudo bem com todos ai ?

Então estou fazendo uma tela que tem 3 Jtextfield para pegar dia, mes e ano, cada um deles tem um limite de caracter 2,2,4.

Porem estou com uma grande dificuldade procurei em todos os lugares mais eu n achei, eu queria que quando eu termina-se de preencher o primeiro Jtextfield o meu cursor fosse ja para o segundo e assim por diante , como eu posso resolver este problema.

E mais uma duvida rapida aqui eu queria que quando esta janela fosse a berta o meu curso ja fosse para uma certa Jtextfield tentei usar o metodo

requestFocus();

porem n deu certo :s

1 Resposta

sales_paulo

Ola,

Como aplicacoes swing sao orientadas a eventos, estarei explicando como voce pode solucionar seu problema usando o evento caretUpdate da interface javax.swing.event.CaretListener, como segue:

package frame;

public class NewJFrame extends javax.swing.JFrame {

    /** Creates new form NewJFrame */
    public NewJFrame() {
        initComponents();
        txt1.requestFocus();
    }

    private void initComponents() {

        lbl = new javax.swing.JLabel();
        txt1 = new javax.swing.JTextField();
        txt2 = new javax.swing.JTextField();
        txt3 = new javax.swing.JTextField();
        btn = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        lbl.setText("Data");

        txt1.addCaretListener(new javax.swing.event.CaretListener() {
            public void caretUpdate(javax.swing.event.CaretEvent evt) {
                txt1CaretUpdate(evt);
            }
        });

        txt2.addCaretListener(new javax.swing.event.CaretListener() {
            public void caretUpdate(javax.swing.event.CaretEvent evt) {
                txt1CaretUpdate(evt);
            }
        });

        txt3.addCaretListener(new javax.swing.event.CaretListener() {
            public void caretUpdate(javax.swing.event.CaretEvent evt) {
                txt1CaretUpdate(evt);
            }
        });

        btn.setText("Sair");
        btn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnActionPerformed(evt);
            }
        });

        // Codigo que posiciona os componentes graficos na tela e ajusta as suas dimensoes (ocultado)

        pack();
    }

    private void btnActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0);
    }

    private void txt1CaretUpdate(javax.swing.event.CaretEvent evt) {
        javax.swing.JTextField  txt = ( javax.swing.JTextField) evt.getSource();

        if (txt.getText().length() > 4) {

            if (txt.equals(txt1)) {
                txt2.requestFocus();
            }

            if (txt.equals(txt2)) {
                txt3.requestFocus();
            }

            if (txt.equals(txt3)) {
                btn.requestFocus();
            }

        }
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    private javax.swing.JButton btn;
    private javax.swing.JLabel lbl;
    private javax.swing.JTextField txt1;
    private javax.swing.JTextField txt2;
    private javax.swing.JTextField txt3;
   
}

Espero ter ajudado.

Att.
Paulo R. A. Sales.

Criado 30 de janeiro de 2008
Ultima resposta 30 de jan. de 2008
Respostas 1
Participantes 2