Tecla de atalho + JInternalFrame

Fala pessoal,
ja estou perdendo os cabelos com isso :D, mas vamos lá…
eu tenho uma tela genérica que é um JInternalFrame, e nesta classe eu configuro algumas teclas de atalho…
ai rodando o sistema, qdo eu abro a tela funciona normal as teclas, porém se eu clico em algum lugar da tela para de
funcionar todos os atalhos.
Provavelmente é alguma coisa de foco…mas ainda não consegui fazer funcionar…
segue a parte que eu crio a tela e onde eu configuro os atalhos:

tProduto = new FormProduto("Consulta de Produto", this);
 desktopPane.moveToFront(tProduto);
 // ========= ok =========
        this.getActionMap().put(Constantes.BT_OK.toString(), new AbstractAction()
        {

            @Override
            public void actionPerformed(ActionEvent e)
            {
               // System.out.println(Constantes.BT_OK.toString());                
                btOkAction(e);
            }
        });
        this.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0), Constantes.BT_OK.toString());
        //this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0), Constantes.BT_OK.toString());
        
         // ========= Novo =========
        this.getActionMap().put(Constantes.BT_NOVO.toString(), new AbstractAction()
        {

            @Override
            public void actionPerformed(ActionEvent e)
            {
                //System.out.println(Constantes.BT_NOVO.toString());
                btNovoAction(e);
            }
        });
        this.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0), Constantes.BT_NOVO.toString());
       // this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0), Constantes.BT_NOVO.toString());
...//existem mais atalhos

se alguém puder dar uma ajuda, agradeço!

alguém? alguma dica?

Normalmente esse é o código usado para trocar o TAB pelo ENTER.

HashSet conj = new HashSet(frame.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); conj.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0)); frame.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, conj);

Não entendi muito bem o seu código, mas vc pode olhar e fazer alguma comparação.

Espero ter ajudado.

como que eu adapto no seu código para quando eu apertar o F10 chamar algum método?

acho que no seu caso, vc vai ter que criar um evento específico pra isso.

Como vc pode ver, o KeyboardFocusManager é uma classe que extends uma classe que trabalha com eventos.

Como customizar essa parte, vou ficar te devendo.

Até mais

alguém tem alguma dica?

Olá amigo

tenta assim:

no lugar de MDIFrame coloque o seu desktop

    
    JMenuBar root = MDIFrame.getInstance().getJMenuBar();
    for (int i = 0; i < root.getMenuCount(); i++) {
        JMenu menu = root.getMenu(i);

        if (i == 1) {
           for (int j = 0; j < menu.getItemCount(); j++){
              JMenuItem obj  = menu.getItem(j);
              if(obj != null) {
       /**
       *  Define os shortcuts dos items do menu cadastro e suas ações
       */

                  if (obj.getText().equals("Clientes")) {
                      obj.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0));
                      obj.addActionListener(new ActionListener() {

                          public void actionPerformed(ActionEvent e) {
   --->>> aqui coloque a  sua chamada 
                              
                          }
                      });
                  }

Silvio Guedes

valeo pelo retorno silviogs, mas na realidade o problema que estou tendo não
nos atalhos dos itens do menu, isso esta funcionando corretamente.
o problema é dpeois que eu abro uma tela, que tenho uns botões e alguns desses botões tem os atalhos. entende?
então qdo eu abro a tela, e não clico em nenhum lugar, os atalhos funcionam, mas depois de eu ja clicar na tela, em algum campo por exemplo,
os atalhos param de funcionar…

valeu por enquanto…