2016-04-08 4 views
0

J'ai un formulaire construit dynamiquement, et les composants ont ajouté des clés de registre dont ils ont besoin pour traiter les actions. Il a aussi une JTable, et quand le JTable est focalisé, il traite toutes les clés, ainsi les clés configurées pour déclencher des actions sur les autres composants ne sont pas exécutées. Puis-je configurer le Jtable pour traiter uniquement les touches de mouvement? par exemple. flèches, maison, fin, pg haut et bas, etc?Comment faire pour que JTable ne traite que les touches de mouvement?

Edit 1: Le DFrame contenant les autres composants utilise cette fonction pour enregistrer de raccourcis clavier:

private void addActionListener(final int key_, final ActionListener al_){ 
    getRootPane().registerKeyboardAction(al_, 
            KeyStroke.getKeyStroke(key_, 0), 
            JComponent.WHEN_IN_FOCUSED_WINDOW); 
    } 

Lorsque le foyer se trouve dans l'un des composants, mais le JTable, les clés enregistrées déclenche en conséquence, mais quand la mise au point est dans le JTable, la clé semble Si ce isnt encore enought, je être « piégé » dans le JTable

fera un SSCCE et modifier plus tard.

+0

Nous ne savons pas comment vous enregistrez réellement les clés. Vous devriez utiliser une liaison par clé. Publiez un [SSCCE] (http://sscce.org/) qui montre le problème. – camickr

Répondre

0

Merci à camickr, quand je faisais le SSCCE je compris le problème: la clé que je testais mon programme était F2, et il est utilisé par le JTable pour modifier une cellule. Mon programme original n'a pas d'édition de cellules, et ce n'était pas si clair à voir dedans. Quoi qu'il en soit, un comportement étrange est que les autres clés utilisées par JTable peuvent être bind, et, après avoir été utilisées par la JTable, elles sont traitées pour la reliure de clés enregistrée - mais pas le F2.