我使用jdk 1.6,我希望国际化菜单项的加速器。 默认语言是法语,我想用英语翻译。我使用下面的代码:
JMenuItem deleteMenuItem = new JMenuItem("delete");
deleteMenuItem.setLocale(Locale.ENGLISH);
deleteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
但我的加速器总是用法语。 我该如何解决这个问题? 提前谢谢。
答案 0 :(得分:1)
您必须为应用程序设置默认区域设置。然后它会工作。
Locale.setDefault(Locale.ENGLISH);
答案 1 :(得分:0)
对于国际化加速器到英语,您需要在实例化新JFrame之前调用Locale.setDefault(Locale.ENGLISH)
。下面的示例我在加速器中更改了法语。我的机器语言环境是英语。
public static void main(String[] args) {
Locale.setDefault(Locale.FRANCE);
JFrame frame = new JFrame("MenuSample Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
menuBar.add(fileMenu);
JMenuItem newMenuItem = new JMenuItem("New", KeyEvent.VK_N);
fileMenu.add(newMenuItem);
JMenuItem cutMenuItem = new JMenuItem("Cut", KeyEvent.VK_T);
KeyStroke ctrlXKeyStroke = KeyStroke
.getKeyStroke(KeyEvent.VK_CUT, 0);
cutMenuItem.setAccelerator(ctrlXKeyStroke);
fileMenu.add(cutMenuItem);
frame.setJMenuBar(menuBar);
frame.setSize(350, 250);
frame.setVisible(true);
}
输出