Preservar layout do teclado em um JTextField?
-
08-07-2019 - |
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.
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.