Verificar que elemento recebeu o foco

5 respostas
A

Olá pessoal!
Apesar de ter procurado no google e aqui no fórum, não consegui sanar minha dúvida.
O que eu preciso é saber qual JTextField recebeu e/ou perdeu o foco.
Por exemplo, vamos supor que eu tivesse uns 2 JTextField e ao colocar o foco no primeiro, apareceria um texto dentro dele falando "Recebi o foco!!!". Quando eu desse TAB (indo para o próximo JTextField), o primeiro JTextField receberia o valor "Perdi o foco.", e o atual receberia o valor "Recebi o foco!!!".

Mudando da água para o vinho, um código em javaScript ficaria desta forma:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Teste de eventos JS</title>
    <script language="javascript" type="text/javascript">

	/******************************************************
	Script para verificar qual elemento input da página
	recebeu o foco.
	Por André Gutierrez.
	*******************************************************

    function pageLoad()
	{
        // Carrega as referencias dos elementos no array;
        var arrInput = document.getElementsByTagName("INPUT");
        // Cria a referencia para os eventos para todos os elementos do array
        for(var i=0, intTotal = arrInput.length; i<intTotal; i++)
		{
            // define a função no controlFocus no evento onfocus do elemento
            arrInput[i].onfocus = controlFocus;
            // define a função no controlBlur no evento onblur do elemento
            arrInput[i].onblur = controlBlur;
        }
    }

    function controlFocus(e)
	{
        // Define a variavel que deve armazenar os elementos
        var el = null;
        // Verifica se existe o parametro e foi carregado (apenas para firefox)
        if(e == null || e== undefined)
		{
            // recupera o elemento que originou o evento IE
            el = window.event.srcElement;
        }else{
            // recupera o elemento que originou o evento FX
            el = e.target;
        }
        // Define o valor no elemento
        el.value = "focus";
    }

    function controlBlur(e)
	{
        // Define a variavel que deve armazenar os elementos
        var el = null;
        // Verifica se existe o parametro e foi carregado (apenas para firefox)
        if(e == null || e== undefined)
		{
            // recupera o elemento que originou o evento IE
            el = window.event.srcElement;
        }else{
            // recupera o elemento que originou o evento FX
            el = e.target;
        }
        // Define o valor no elemento
        el.value = "blur";
    }

    </script>
</head>
<body onload="pageLoad();">
    <p>
        Define os eventos focus e blur para todos os elementos input da página
    </p>
    <input id="txtTeste1" type="text" /> <br />
    <input id="txtTeste2" type="text" /> <br />
    <input id="txtTeste3" type="text" /> <br />
    <input id="txtTeste4" type="text" /> <br />
    <input id="txtTeste5" type="text" /> <br />
    <input id="txtTeste6" type="text" /> <br />

</body>
</html>

Desde já agradeço.

5 Respostas

A

up?

R

Isso ai é JavaScript, então acredito que seja simples.

Dentro dos campos input coloca onblur="" e onfocus="".

ex:

A

Reinaldo, aquele era apenas um exemplo, utilizando javaScript, do que eu queria fazer em Java.

Mesmo assim agradeço a sua atenção.

:smiley:

Mas achei um tópico aqui no fórum que falava sobre foco e resolveu meu problema. Ei-lo:
http://www.guj.com.br/posts/list/26281.java

Valeu aíííííí!!!

R

Após uma segunda lida percebi que você queria aquilo em Java, desculpe.

Neste caso, pode-se adicionar algum listener (FocusListener) aos objetos, porém dependendo de sua aplicação eu não aconselharia, essas coisas são chatas (se eu tivesse que preencher isso ia me estressar com o formulário) e as vezes inviáveis, por exemplo se existe alguma possibilidade de este campo já iniciar preenchido e este valor ser incorreto, ele vai passar para as próximas etapas incorreto por que o usuário não vai nem clicar no campo para ele receber/perder o foco e ser validado.

Seria interessante deixar essa validação como ultima etapa, no botão de envio do formulário.

A

Valeu aí pelas dicas Reinaldo! :smiley:

Criado 26 de junho de 2009
Ultima resposta 6 de jul. de 2009
Respostas 5
Participantes 2