3

简单示例: 2 JTextFields,一个用于西班牙语单词,另一个用于翻译。有没有办法保留键盘布局,JTextField以便用户不必来回切换?

TIA。

4

3 回答 3

6

是的,此演示代码使用每个文本字段中所选语言环境的键盘布局:

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

在安装了 EN 和 ES 键盘布局的 Windows XP Home 上进行了测试(通过控制面板 > 区域和语言选项 > 语言 > 详细信息...)。有关更多详细信息,请参阅Java 输入法框架

于 2009-05-07T14:40:18.980 回答
0

不,键盘布局由操作系统或桌面环境管理。

于 2009-05-07T13:58:43.790 回答
0

如果您确切知道相关西班牙语键盘的布局,理论上您可以自己处理 KeyEvent,将它们翻译成适当的字符。然而,这并不是一件容易的事。您最终可能会自己在文本字段中插入字符。

于 2009-05-07T14:38:11.840 回答