在JTextfield中保留键盘布局?

简单的例子:2个JTextFields ,一个用于西class牙语单词,另一个用于翻译。 有没有办法保留每个JTextField键盘布局,以便用户不必来回切换?

TIA。

是的,此演示代码使用每个文本字段中所选语言环境的键盘布局:

 public class InputMethodTest { public static void main(String[] args) { final InputContext en = InputContext.getInstance(); en.selectInputMethod(Locale.UK); final InputContext es = InputContext.getInstance(); es.selectInputMethod(new Locale("es", "ES")); JTextArea english = new JTextArea() { @Override public InputContext getInputContext() { return en; } }; JTextArea spanish = new JTextArea() { @Override public InputContext getInputContext() { return es; } }; JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new GridLayout()); frame.getContentPane().add(new JScrollPane(english)); frame.getContentPane().add(new JScrollPane(spanish)); frame.setSize(600, 400); frame.setVisible(true); } } 

在安装了EN和ES键盘布局的Windows XP Home上进行测试(通过控制面板>区域和语言选项>语言>详细信息…)。 有关更多详细信息,请参阅Java输入方法框架 。

不,键盘布局由操作系统或桌面环境管理。

如果您确切地知道所讨论的西class牙语键盘的布局,理论上您可以自己处理KeyEvents,将它们转换为适当的字符。 然而,这不是一件容易的事。 您可能最终会自己在文本字段中插入字符。