Java-Swing-Anschläge: wie man STRG-modifier arbeiten
In dem folgenden Programm, warum schlagen die - Taste drucken "Hallo, Welt", während Sie STRG+ nicht?
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);
}
}
Wie könnte ich es beheben, dass Sie STRG+ funktioniert?
InformationsquelleAutor Thomas | 2010-03-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich finde es einfacher zu verwenden:
oder:
InformationsquelleAutor camickr
Dude, verwenden Sie diese
Interessant, ich habe meine Anregung vor diesem Beitrag, und ich gab Ihnen andere alternativen, die Sie vielleicht in der Lage zu verwenden in verschiedenen Situationen. Ich denke, ich werde nicht gehen, um alle die Mühe das nächste mal.
Ich weiß nicht, ob ich richtig bin, aber der Grund, dass der code vielleicht nicht gearbeitet haben, weil im ersten Fall, Sie wurden unter Bezugnahme auf ein einfaches Zeichen 'a'. Wo-in-im zweiten Fall, Sie beziehen sich auf eine Tastenkombination, die die ist eine ASCII-und scan-Wert(Strg-Taste). Ich glaube es sollte im Zusammenhang mit Veranstaltungen richtig.
Tut mir Leid, das war ein Fehler.
InformationsquelleAutor bragboy
Ja, der obige code funktioniert.
Big picture - Ctrl+a und gelesen werden als andere Tastenbelegungen das gleiche wie und b would be different.
InformationsquelleAutor SOA Nerd