Swing中的本地化加速器(JMenuItem热键)

我正在使用德语笔记本电脑上的英语应用程序,通过西class牙语操作系统。

即使我在我的应用程序的开始时明确设置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); } }); } }