Focus Dinamico

Boa tarde pessoal.

Existe uma forma de setar o foco num componente (JTextField ou outros) de forma dinâmica ?
Ou seja … tendo uma String com o nome do Campo setar o foco a partir desse código ?

Atualmente estou fazendo assim:

    if (msg.getCodigo() != null){

        JOptionPane.showMessageDialog(null, msg.getMensagem());

        switch (msg.getCodigo()) {
            case "1": Nome.requestFocus(); break;
            case "2": CPF.requestFocus(); break;
            case "3": Endereco.requestFocus(); break;
            . . .
            . . .
        }
    }

O Objeto “msg” tem apenas dois campos, “codigo” e “Mensagem” e é através do código que sei qual campo esta com erro … mas veja bem … se tenho uma tela com muitos campos a criticar fica trabalhoso setar o foco … se fosse possível fazer isso a partir do Código, que passaria a vir com o nome do campo, ex: “Nome”, me daria menos trabalho.

Não acha muito trabalhoso dessa forma?
Eu criaria um mapa onde a chave seria o nome do campo e o valor seria o componente.

Sim acho … minha dúvida é que não conheço nenhuma outra forma de dar o “Endereco.requestFocus()” de forma dinâmica. Como eu faria isso, mesmo tendo o nome do campo e o componente ? O que já tenho na verdade.

Se você tem um mapa conforme abaixo:

Map<String, JComponent> campos = /* inicialização */;

E em algum lugar alimentou ele assim:

campos.put( nomeDoCampo1, componenteDoCampo1 );
campos.put( nomeDoCampo2, componenteDoCampo2 );
campos.put( nomeDoCampoN, componenteDoCampoN );

Basta você fazer assim:

campos.get( nomeDoCampo ).requestFocus();

Muito bom meu amigo … vlw mesmo ;o)