我正在Java(Swing)中构建一个文本编辑器,其中包含一个用于键入文本的EditorPane和一个包含JRadioButtonMenuitems的菜单。喜欢菜单是“语言”,“语言”下的JRadiobuttonMenuitems是“西班牙语”,“日语”,“英语”等场景,当用户点击并选择任何JRadioButtonMenuItem时系统必须根据所选语言更改其IME。 就像用户单击并选择日语选项一样,编辑器必须将IME更改为日语以获取当前进程,并允许用户以相应的语言输入文本。
我安装了正确的IME。手动我可以改变IME并能够在swing组件中写入。但我的问题是如何以编程方式加载IME。
目前我正在windowsXP上构建此应用程序,但希望此应用程序更改每个操作系统的IME语言。
我有谷歌但没有找到任何相关信息来改变IME。
由于
答案 0 :(得分:3)
通过获取InputContext实例并覆盖JEditorPane的getInputContext方法,可以为JEditorPane更改IME语言。
final InputContext context = InputContext.getInstance();
jEditorPaneMain = new javax.swing.JEditorPane()
{
@Override
public InputContext getInputContext() {
return context;
}
};
并选择任何语言,例如点击日语JRadioButtonMenuItem添加一个ActionListener
jRadioButtonMenuItemJapanese.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButtonMenuItemJapaneseActionPerformed(evt);
}
});
在事件处理程序中执行以下操作。
private void jRadioButtonMenuItemJapaneseActionPerformed(java.awt.event.ActionEvent evt) {
context.selectInputMethod(Locale.JAPANESE);
}
我在Windows XP上试过这个。它的工作非常好。