Java Swing: Ctrl + F1 no funciona globalmente, pero sí una combinación de teclas

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

  •  02-07-2019
  •  | 
  •  

Pregunta

Tengo una interfaz gráfica de usuario con un panel con pestañas en el norte. Varios eventos clave se agregan a su 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");

Si el panel de pestañas u otro botón en una barra de herramientas tiene el foco, Ctrl + F1 no tiene ninguna función. Si se enfoca otro componente (por ejemplo, JTree), Ctrl + F1 ejecuta la acción.

El problema es que funciona en todas partes si cambio el código clave a, por ejemplo. VK_F2 .

La tecla F1 no se usa en ningún otro lugar del programa.

¿Alguna idea?

Gracias, André

Editar: Una búsqueda de texto completo en el código fuente de Java dio la respuesta: ToolTipManager registra la clave Ctrl + F1 para mostrar el texto de información sobre herramientas si se presiona la combinación de teclas. Entonces, si un botón con una información sobre herramientas está enfocado, Ctrl + F1 es manejado por el ToolTipManager . De lo contrario mi acción es llamada.

¿Fue útil?

Solución

Para que esto obtenga una respuesta, aquí está la solución copiada de su edición en la pregunta. ;-)

  

El ToolTipManager registra la clave    Ctrl + F1 para mostrar el texto de información sobre herramientas si   Se presiona la combinación de teclas. Así que si   un botón con una información sobre herramientas está enfocado,    Ctrl + F1 es manejado por el   ToolTipManager. De lo contrario mi accion es   llamado.

Otros consejos

¿Puede ser que el sistema operativo vuelva a configurar la tecla F1 ? Instale una escucha de clave y vea qué eventos se manejan.

BTW: Te ayudaría si pudieras editar tu pregunta e insertar un código comprobable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top