Dans le programme suivant, pourquoi frappe la touche A KBD> Imprimer "Hello, World" em> tout en frappant Ctrl kbd> + A ne pas? import java.awt.event.*;
import javax.swing.*;
public class KeyStrokeTest {
public static void main(String[] args) {
JPanel panel = new JPanel();
/* add a new action named "foo" to the panel's action map */
panel.getActionMap().put("foo", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
System.out.println("hello, world");
}
});
/* connect two keystrokes with the newly created "foo" action:
- a
- CTRL-a
*/
InputMap inputMap = panel.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(Character.valueOf('a'), 0), "foo");
inputMap.put(KeyStroke.getKeyStroke(Character.valueOf('a'), InputEvent.CTRL_DOWN_MASK), "foo");
/* display the panel in a frame */
JFrame frame = new JFrame();
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);
}
}
3 Réponses :
Je trouve plus facile à utiliser: ou: p>
mec, utilisez ce
Intéressant, j'ai fait ma suggestion avant cette publication, plus je vous ai donné d'autres alternatives que vous pourriez être en mesure d'utiliser dans différentes situations. Je suppose que je n'irai pas à tous les ennuis la prochaine fois.
@THOMAS: Je ne sais pas si je suis correct, mais la raison pour laquelle votre code n'aurait peut-être pas travaillé car dans le premier cas, vous faisiez référence à un caractère simple 'A'. Où dans le second cas, vous vous référez à une combinaison de clés qui est une valeur ASCII et une valeur de numérisation (clé Ctrl). Je pense que cela aurait dû être associé à des événements correctement.
@camickr - Je suis désolé, c'était une erreur honnête.
YEP, le code ci-dessus fonctionnera. p>
Big Picture - Ctrl + A KBD> et A KBD> est lu comme des touches différentes de la même manière que A KBD> et B KBD> serait différent. p>
L'OP sait "Ctrl-A" et "A" sont des coups de frappe différents.