En el siguiente programa, ¿por qué no golpear el una clave de impresión"hola, mundo", mientras que golpearCTRL +un no?Java Pulsaciones de Swing: cómo hacer el trabajo CTRL-modificador
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);
}
}
¿Cómo podría solucionarlo que CTRL +un funciona tan bien?
¡Amigo, gracias! Su solución funciona, sin embargo, todavía me pregunto por qué la mía no ... – Thomas
Interesante Hice mi sugerencia antes de esta publicación, además le di otras alternativas que podría utilizar en diferentes situaciones. Supongo que no me tomaré la molestia la próxima vez. – camickr
@Thomas: No sé si estoy en lo correcto, pero la razón por la que su código podría no haber funcionado es porque en el primer caso, se refería a un carácter simple 'a'. Where-in en el segundo caso se refiere a una combinación de claves que es un ASCII y un valor de escaneo (tecla Ctrl). Siento que debería haber estado asociado con los eventos adecuadamente. – bragboy