Pular JTextField automaticamente [RESOLVIDO]

8 respostas
caiofabioa

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:

8 Respostas

dobau

no final do seu focusGained você pode fazer isso:

getNextFocusableComponent().requestFocus();

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

ViniGodoy

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

caiofabioa

Obrigado, funcionou :wink:

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

caiofabioa

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.

dobau

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…

caiofabioa

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!

dobau

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));
        }
    }
caiofabioa

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

Criado 16 de janeiro de 2013
Ultima resposta 17 de jan. de 2013
Respostas 8
Participantes 3