ENTER para pular de campo x JButton

Ola,

Tenho o metodo abaixo que eu chamo para todos os componentes da tela, para poder pular de campo com o ENTER:

  public static void addEnterToTraversalKeyStrokes(Component comp) {
    int forward = KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS;
    Set forwardKeys = comp.getFocusTraversalKeys(forward);
    Set newForwardKeys = new HashSet(forwardKeys);
    newForwardKeys.add(KeyStroke.getKeyStroke("ENTER"));
    comp.setFocusTraversalKeys(forward, newForwardKeys);
  }

Ele funciona bem, com o mesmo comportamento do TAB, exceto quando existe um JButton apos um JTextField/JComboBox/etc. Eu setei o JButton com o setFocusable(false). Com o TAB, funciona bem, pois ele nao passa pelo JButton. Contudo, com o ENTER nao funciona. Ele fica travado no componente previo ao JButton e nao vai pra frente. O que esta faltando para controlar melhor isso?

Ao invés de chamar o método para todos os componentes tesnte usar esse código abaixo coloque ele no main da aplicação que ele vai setar o enter para pular de componente por todos os componentes da sua aplicação. Comigo funciona bem

			Set<AWTKeyStroke> set = new HashSet<AWTKeyStroke>(KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
		    set.add(KeyStroke.getKeyStroke("ENTER"));
		    KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set);

Resolveu o meu problema inicial, ou seja, agora esta pulando o button focusable=false. Contudo, agora nas telas onde tenho um botao OK onde se o usuario pressionar ENTER ele deve aciona-lo, esta pulando para o proximo botao Cancelar. O que pode estar faltando?

Eu não tenho esse problema porque não uso Enter para pular de componente. Tente usar o código que vc usava para cada componente porém desta vez, ao invés de colocar, retire o ENTER do Set de teclas par pular componentes somente para botões. Talves funcione não testei…