我正在尝试为我的应用程序实现与键盘布局无关的键盘快捷键,例如使用 Ctrl-+ 进行缩放。
我认为这样做的正确方法是:
KeyStroke.getKeyStroke(new Character('+'), 0)
KeyStroke.getKeyStroke(new Character('+'), InputEvent.CTRL_DOWN_MASK)
不幸的是,似乎只有第一种方法有效,而我想使用第二行中的修饰键。
有想法该怎么解决这个吗?
这是一个完整的片段:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
public class KeystrokeTest extends JFrame{
JLabel label = new JLabel("text");
public KeystrokeTest(){
JPanel panel = new JPanel();
panel.add(label);
panel.registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
label.setVisible(!label.isVisible());
}
},
KeyStroke.getKeyStroke(new Character('+'), InputEvent.CTRL_DOWN_MASK),
JComponent.WHEN_IN_FOCUSED_WINDOW);
add(panel);
setSize(200,200);
}
public static void main(String[] args) {
new KeystrokeTest().setVisible(true);
}
}