Да, этот демонстрационный код использует раскладку клавиатуры для выбранных локалей в каждом текстовом поле:
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);
}
}
Протестировано в Windows XP Home с установленными раскладками клавиатуры EN и ES (через Панель управления> Язык и региональные стандарты> Языки> Детали ...). См. Java Input Framework Framework для получения более подробной информации.