Désactiver Entrer la Clé de se déplacer vers le bas une ligne dans JTable
J'ai besoin de remplacer la touche entrée de fonctionnalités sur une JTable. À l'heure actuelle le comportement par défaut est de déplacer la ligne de sélection d'une ligne vers le bas lorsque l'utilisateur appuie sur la touche "Enter". Je veux désactiver et de faire quelque chose de différent en fonction de leur sélection. Le problème est qu'il semble se déplacer vers le bas avant qu'il ne passe dans ma keylistener qui prend dans la sélection d'une ligne - ce donc ouvre une autre fenêtre avec le mauvais ligne sélectionnée.
C'est mon code pour l'instant...:
public class MyJTable extends JTable {
public MyJTable(){
setRowSelectionAllowed(true);
addListeners()
}
public void addListeners(){
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
openChannel();
}
}
});
}
public void openChannel(){
for (int selectedRow : getSelectedRows()){
//Code to open channel based on row selected
}
}
}
KeyListener
n'est pas la voie à suivre, composants Swing utilisationKeyBinding
s. Il y a donc une méthode d'enlèvement, enlevezKeyBinding
s deJTable
et ajouter votre propre.- sans rapport: la JSomething sont destinés à être utilisés - ne pas sous-classe si vous pouvez atteindre la même configuration.
- Merci pour vos réponses, qui fonctionne très bien. @Kleopatra, je le comprends, mais ce JTable doit être étendue, l'exemple était seulement un test de code de sorte que vous pouvez voir quel était le problème. Mais il garder cela à l'esprit pour l'avenir.
Vous devez vous connecter pour publier un commentaire.
+1 pour @Robin réponse
Ajout à mon commentaire...
Swing utilise
Raccourci clavier
s simplement remplacer l'existant fonctionnalités par l'ajout d'un nouveauKeyBinding
àJTable
(la beauté se produit en raison deJComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
):simplement appeler cette méthode et passer
JTable
exemple pour remplacer la fonctionnalité standard deJTable
ENTRÉEC'est implémentée à l'aide de raccourcis clavier, qui est préféré par rapport à clé auditeurs. Je vous suggère fortement de faire la même chose: remplacer votre clé auditeur par une clé de liaison.
La solution est de remplacer l'entrée dans le InputMap pour pointer vers votre propre Action (que vous insérez dans l'action plan), ou simplement à remplacer l'entrée appropriée dans l'action de la carte.
La raccourcis clavier tutoriel contient plus d'infos