1

私はスペイン語のOSを使用して、ドイツのラップトップで英語のアプリを使用しています。

アプリの最初にLocale.setDefault(Locale.ENGLISH)を明示的に設定しても、メニューにhotkexsが次のように表示されます。

CTRL + Mayúsculas + C 

それ以外の

CTRL + SHIFT + C 

KeyStrokeオブジェクトに渡しました。

その単語は、指定したように英語にローカライズされないだけでなく、ShiftキーをMAYUS(英語ではCAPS LOCK)にマップするので、これは言語の問題だけでなく、キーマップの問題でもあると思います。

では、どうすればすべてのGUIコンポーネントに英語を課すことができますか?

ありがとうございました!

4

1 に答える 1

3

ツールキット コードを実行する前に、必ずロケールを設定する必要があります。次のコードはその効果を示していますLocale.setDefault(Locale.GERMAN);。他の行に移動すると、デフォルトのアクセラレータ名が再び表示されます。

コード内でロケールを設定する代わりに、次の引数を VM に追加することもできます。

-Duser.language=DE

ロケール メニュー

public class MenuLocale {

    public static void main(String[] args) {
        Locale.setDefault(Locale.GERMAN);
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

                JMenuBar menubar = new JMenuBar();
                JMenu menu = new JMenu("Menu");
                JMenuItem menuitem = new JMenuItem("Menuitem");    
                menuitem.setAccelerator(KeyStroke.getKeyStroke('X', KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK));

                f.setJMenuBar(menubar);
                menubar.add(menu);
                menu.add(menuitem);

                f.pack();
                f.setVisible(true);
            }
        });
    }
}
于 2012-06-08T16:23:51.193 に答える