我正在德国笔记本电脑上使用西类牙语操作系统开发英语应用程序。
即使我在我的应用程序开始时明确设置 Locale.setDefault(Locale.ENGLISH),我也会在菜单中看到 hotkexs
CTRL + Mayúsculas + C
代替
CTRL + SHIFT + C
我传递给 KeyStroke 对象。
不仅这个词没有像我指定的那样本地化为英语,而且还将 SHIFT 键映射到 MAYUS(英语为 CAPS LOCK),所以我想这不仅是语言问题,而且键盘映射也是如此好吧。
那么我怎样才能为所有的 GUI 组件强加英语呢?
谢谢!
最佳答案
您必须确保在执行任何工具包代码之前设置语言环境。以下代码显示了效果:如果您将 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);
}
});
}
}
关于java - Swing 中的本地化加速器(JMenuItem 热键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952130/