Java:使用带修饰符的键入键击

时间:2013-04-12 08:43:38

标签: java keyboard-shortcuts

我正在尝试为我的应用程序实现独立于键盘布局的键盘快捷键,例如使用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);
    }
}

1 个答案:

答案 0 :(得分:0)

尝试这一行

KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, InputEvent.CTRL_MASK);