Pular JTextField automaticamente [RESOLVIDO]

Olá pessoal,

Estou com uma dúvida quero que ao chegar em um JTextField a tecla “tab” seja acionada automaticamente, como tivesse pulando aquele campo, mas é importante ter o focusGained porque ele chama metodo quando recebe focus! Se alguém puder ajudar agradeço :smiley:

no final do seu focusGained você pode fazer isso:

getNextFocusableComponent().requestFocus();

ou implementar um novo FocusListener e adicionar essa linha no focusGained.

Isso está cheirando a gambi. O que ele faz no focusGained()? O que exatamente você precisa fazer?

Obrigado, funcionou :wink:

no focusGained estou chamando uma media de outro JTF, mas ele é um campo sem edição :wink:

Esse é o focusGainded() do meu JTF que deverá receber um metodo:

private void JTF_ex63_s4FocusGained(java.awt.event.FocusEvent evt) {
        recebe_valor_s();
        JTF_ex63_z1.requestFocus();
    }

E este é o metodo que ele está chamando e recebendo:

private void recebe_valor_s() {
        float s1 = Float.parseFloat(JTF_ex63_s1.getText());
        float s2 = Float.parseFloat(JTF_ex63_s2.getText());
        float s3 = Float.parseFloat(JTF_ex63_s3.getText());
        float s4 = (s1+s2+s3)/3;
        this.JTF_ex63_s4.setText(String.valueOf(s4));
    }

Obrigado pela ajuda de vocês, e ViniGodoy se isso for gambi, existe uma forma não gambi de fazer isso? Estou aqui para aprender mesmo :wink:

Abraços.

O que eu faria era deixar o s4 como não editável e não focável, o valor dele depende é dos valores de s1, s2 e s3, então eu chamaria o recebe_valor_s (renomeava para calcular_valor_s) no focusLost desses componentes. Dessa forma eu acho mais lógico o funcionamento, mas vai da opinião cada um…

Então dobau eu tinha feito no focusLost() porem quando ele ia de campo pra campo dava um Event Error na saída porque tinha campos que estavam nulos resolvi calcular tudo quando desse focusGained() no s4 para calcular todos de uma vez o problema que é um conjunto de operações são valor (a - i -u - s - z) (exame fonoaudiólogo). Bom ta funcionando por enquanto rsrs mas obrigado pelas dicas!

E caso o usuário clique direto no s4 não vai dar o mesmo erro ?

Talvez o que você precise é da NumberUtils da commons-lang

private void recebe_valor_s() {
        float s1 = NumberUtils.toFloat(JTF_ex63_s1.getText());
        float s2 = NumberUtils.toFloat(JTF_ex63_s2.getText());
        float s3 = NumberUtils.toFloat(JTF_ex63_s3.getText());
        float soma = (s1+s2+s3);
        if (soma != 0) { // ou algo semelhante...
           float s4 = soma/3;
           this.JTF_ex63_s4.setText(String.valueOf(s4));
        }
    }

Olha não tinha pensado nisso :wink: rsrs vou implementar isso e ver o que vai acontecer!