Swing Java: Ctrl + F1 non funziona a livello globale, ma a vicenda combinazione di tasti

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

  •  02-07-2019
  •  | 
  •  

Domanda

Ho una interfaccia grafica con un riquadro a schede a nord. Diversi eventi chiave vengono aggiunti alla sua mappa di input:

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 il riquadro a schede o un altro pulsante in una barra degli strumenti ha lo stato attivo, Ctrl + F1 non ha alcuna funzione. Se un altro componente è focalizzato (ad es. JTree), Ctrl + F1 esegue l'azione.

Il problema è che funziona ovunque se cambio il Keycode in ad es. VK_F2 .

La chiave F1 non viene utilizzata in nessun'altra parte del programma.

Qualche idea?

Grazie, André

Modifica: Una ricerca full-text nel codice sorgente Java ha dato la risposta: ToolTipManager registra la chiave Ctrl + F1 per visualizzare il testo della descrizione comandi se viene premuta la combinazione di tasti. Pertanto, se un pulsante con una descrizione comandi è attivo, Ctrl + F1 viene gestito da ToolTipManager . Altrimenti viene chiamata la mia azione.

È stato utile?

Soluzione

Per ottenere una risposta, ecco la soluzione copiata dalla tua modifica nella domanda. ; -)

  

ToolTipManager registra la chiave    Ctrl + F1 per visualizzare il testo della descrizione comandi se   viene premuta la combinazione di tasti. Quindi se   un pulsante con una descrizione comandi è focalizzato,    Ctrl + F1 è gestito da   ToolTipManager. Altrimenti la mia azione è   chiamato.

Altri suggerimenti

È possibile che il sistema operativo esegua il retarget della chiave F1 ? Installa un listener di chiavi e vedi quali eventi sono gestiti.

A proposito: sarebbe utile se tu potessi modificare la tua domanda e inserire un codice testabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top