0

アプリケーションにキーボード レイアウトに依存しないキーボード ショートカットを実装しようとしています。たとえば、ズームに Ctrl-+ を使用します。

私はそうする正しい方法は次のようなものだと思いました:

KeyStroke.getKeyStroke(new Character('+'), 0)
KeyStroke.getKeyStroke(new Character('+'), InputEvent.CTRL_DOWN_MASK)

残念ながら、最初の方法しか機能していないようですが、2 行目のような修飾キーを使用したいと考えています。

これを修正する方法についてのアイデアはありますか?

完全なスニペットを次に示します。

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);
    }
}
4

1 に答える 1

0

代わりにこの行を試してください

KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, InputEvent.CTRL_MASK);
于 2013-04-12T08:54:00.467 に答える