在下面的程序,爲什麼擊中一個鍵打印「你好,世界」同時擊中CTRL +一個不?的Java Swing快捷鍵:如何讓CTRL-修改工作
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);
}
}
我怎麼能解決這個問題是CTRL +一個作品也?
老兄,謝謝!您的解決方案的工作原理,但我仍然想知道爲什麼我的不... – Thomas
有趣的我在本文之前提出了我的建議,再加上我給了你其他的替代品,你可能能夠在不同的情況下使用。我想我下次不會遇到麻煩。 – camickr
@Thomas:我不知道我是否正確,但是你的代碼可能不起作用的原因是因爲在第一種情況下,你指的是一個簡單的字符'a'。在第二種情況下,您指的是ASCII碼和掃描值(Ctrl鍵)的鍵組合。我覺得它應該正確地與事件聯繫在一起。 – bragboy