Java Swing: o Ctrl + F1 não funcionar globalmente, mas uns aos outros combinação de teclas

StackOverflow https://stackoverflow.com/questions/138533

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu tenho um gui balanço com um painel com abas no norte. Vários eventos-chave são adicionados ao seu mapa de entrada:

InputMap paneInputMap = pane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK ), "finish");
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F1, KeyEvent.CTRL_MASK ), "toggletoolbar");

Se o painel com guias ou outro botão na barra de ferramentas tem o foco, Ctrl + F1 não tem nenhuma função. Se outro componente é focado (por exemplo JTree), Ctrl + F1 executa a ação.

O problema é que workes em todos os lugares se eu alterar o código de exemplo VK_F2.

A chave F1 is'nt usado em qualquer outro lugar no programa.

Qualquer idéia?

Obrigado, André

Editar: A pesquisa de texto completo no código fonte java deu a resposta: O ToolTipManager registeres a tecla Ctrl + F1 para exibir o texto dica de ferramenta se a combinação tecla é pressionada. Então, se um botão com uma dica de ferramenta é focada, Ctrl + F1 é tratado pelo ToolTipManager. Caso contrário, a minha ação é chamada.

Foi útil?

Solução

Assim que este recebe uma resposta, aqui está a solução copiado de sua edição na pergunta. ; -)

O ToolTipManager registeres a chave Ctrl + F1 para exibir o texto dica se a combinação tecla é pressionada. Então se um botão com uma dica de ferramenta é focada, Ctrl + F1 é tratado pelo ToolTipManager. Caso contrário, a minha ação é chamado.

Outras dicas

pode ser o segmenta novamente OS o F1 chave? Instalar um ouvinte chave e ver o que eventos são tratados.

BTW:. Seria bom se você pudesse editar a sua pergunta e inserir algum código testável

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top