2011-11-23 7 views
6

Ho un'applicazione con un pannello a schede e diversi componenti al suo interno. Ho fissato un MenuItem come azione con un acceleratore:Esiste un elemento Swing con F6 come acceleratore predefinito?

private final Action focusDefaultCommandsAction = new AbstractAction() 
{ 
    { 
     putValue(NAME, "Fokusiere Kommandoliste"); 
     putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0)); 
    } 

    @Override 
    public void actionPerformed(final ActionEvent e) 
    { 
     invokeShowCommandsList(); 
    } 
}; 

So che c'è una scheda in cui l'Accelearator per il tasto F6 non funziona. il tasto F7 funziona.

C'è forse un acceleratore di default su uno Swing Element che ha priorità sul mio acceleratore?

risposta

9

È possibile cercare questo in BasicLookAndFeel.java (o classe simile a seconda del L & F che si utilizza), cercare su F6.

Sembra che F6 sia utilizzato da JSplitPane per attivare la messa a fuoco tra il contenuto e i divisori. Per rimuoverlo si potrebbe usare qualcosa di simile (non testato, penso che la rimozione l'azione reale è più difficile perché potrebbe essere in una mappa di ingresso genitore):

splitPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) 
    .put(KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0), "none"); 
+1

Miracle: funziona :) grazie mille. – Neifen

+0

Nessuno conosce un luogo in cui trovare tutti gli acceleratori utilizzati dai componenti di Swing. Potrebbe essere utile –

+0

Nota che JSplitPane usa anche l'acceleratore F8. –

Problemi correlati