Pergunta

Um exemplo simples: 2 JTextFields, um para uma palavra castelhana-lo por outro de tradução. Existe uma maneira de preservar o layout do teclado por JTextField para que o usuário não teria de mudar e para trás?

TIA.

Foi útil?

Solução

Sim, este código de demonstração usa o layout de teclado para as localidades selecionadas em cada campo de texto:

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);
  }
}

Testado em Windows XP Home com EN e ES layouts de teclado instalados (via Painel de controle> Opções regionais e de idioma> Idiomas> Detalhes ...). Veja a Java Input Method Framework para mais detalhes .

Outras dicas

Não, layouts de teclado são geridos pelo ambiente OS ou desktop.

Se você sabe exatamente o layout do teclado espanhol na pergunta que você poderia, teoricamente, processar KeyEvents mesmo, traduzi-las em caráter apropriado. No entanto, esta não seria uma coisa fácil de fazer. Você provavelmente iria acabar inserindo caracteres nos campos de texto você mesmo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top