Сохранение раскладки клавиатуры в JTextfield? - PullRequest
3 голосов
/ 07 мая 2009

Простой пример: 2 JTextFields, один для испанского слова, другой для его перевода. Есть ли способ сохранить раскладку клавиатуры на JTextField, чтобы пользователю не приходилось переключаться назад и вперед?

ТИА.

Ответы [ 3 ]

6 голосов
/ 07 мая 2009

Да, этот демонстрационный код использует раскладку клавиатуры для выбранных локалей в каждом текстовом поле:

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 для получения более подробной информации.

0 голосов
/ 07 мая 2009

Если вы точно знаете расположение испанской клавиатуры, о которой идет речь, вы можете теоретически обработать KeyEvents самостоятельно, переведя их в соответствующий символ. Однако это будет нелегко. Вы, вероятно, в конечном итоге вставите символы в текстовые поля самостоятельно.

0 голосов
/ 07 мая 2009

Нет, раскладки клавиатуры управляются ОС или средой рабочего стола.

...