Thiago,
Não sei se ajuda mas enfrentei problema semelhante. Não tenho certeza se
essa minha explicação está correta, mas com esse raciocínio eu consegui
superar o problema.
O que ocorre é que vc está fazendo o requestFocus no mesmo componente que
está disparando o focusLost. Isso causa algum problema e o efeito que tinha
era como se não existisse mais foco em lugar algum. Então o que fiz foi
criar os componentes personalizados extendendo dos originais (ex:
MeuInputField extends InputField) e sobrescrevia o método que dispara a
perda de foco nos componentes (Component.processFocusEvent). Dessa forma,
primeiro eu validava o dado. Caso ele fosse válido eu permitiria disparar de
verdade o método de mudança de foco da classe pai (super.processFocusEvent).
Caso contrário, o método não fazia nada....
Algo mais ou menos assim:
class MeuInputField extends InputField
{
    public void processFocusEvent(FocusEvent e)
    {
        If (dados válidos)
            super.processFocusEvent(e);
    }
}
Espero que ajude!

-----Mensagem original-----
De: Thiago Carneiro [mailto:[EMAIL PROTECTED]]
Enviada em: quarta-feira, 9 de maio de 2001 16:00
Para: [EMAIL PROTECTED]
Assunto: [java-list] Problema de focus.


Caros colegas,
 
     Estou tratando um evento de perda de foco. Em um programa meu, quando
uma determinada caixa de texto perde o foco, o programa verifica se o
conteúdo é válido ou não.
     Se não for válido, o programa deveria avisar através de uma caixa de
diálogo e logo depois retornar o foco para a caixa de texto.    
      No meu programa, a caixa de diálogo aparece advertendo que o conteúdo
é inválido, porém o foco permanece no outro componente embora o código mande
que o foco deveria voltar à caixa de texto. Gostaria de saber qual é o
problema.
Alguém poderia me ajudar?
       Eis um trecho do código:
 
     void textField_focusLost(FocusEvent e) {
         if (!format.verificaFormato(textField.getText())) {
            dialogo.show;              // chama a caixa de diálogo
            if (dialog.isButtonClicked) {   // se o botão Ok for pressionado
               dialog.dispose();
               textField.selectAll();          // seleciona o conteúdo
               textField.requestFocus();  // deveria voltar o foco para a
caixa de texto
            }
         }
    }

 
   Grato pela atenção.
 
    Carlos.


------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a