我有几种 Windows 7 附带的用于书写(繁体中文)台湾语的输入法。此外,所有输入法都可以选择切换字符宽度(单字节/双字节字符)。
- 中文(繁体) - 新快
- 中文(繁体) - ChangJie
- 中文(繁体) - 快速
- 中文(繁体) - 拼音
- 中文(繁体) - 新音标
- 中文(繁体)- 新昌颉
如果我在 Java 应用程序中选择其中一种输入法并将字符宽度设置为半角(单字节字符模式),我可以在 JTextField 中成功输入文本。但是,如果应用程序显示一些对话框(例如JOptionPane)或弹出窗口,输入法字符宽度会自动变为全角(双字节字符模式)。之后,用户必须手动切换到半角字符。
我可以使用 Java 类“InputContext”以编程方式打开或关闭输入法,但我无法控制输入法是否设置为全角/半角(单/双字节)字符模式。
我想也许可以从 Windows 输入法设置中禁用它,但是没有与自动切换字符宽度相关的选项。
问题是:有没有办法处理(禁用)这种自动切换?
以下是使用上述输入法进行测试的示例代码:
public class Example implements ActionListener {
JFrame f = new JFrame("pasod");
JTextField txt = new JTextField();
Button btn = new Button("Locale");
public Example() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout());
btn.addActionListener(this);
panel.add(btn);
panel.add(txt);
f.add(panel);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setSize(800, 100);
f.setVisible(true);
}
public static void main(String[] args) {
new Example();
}
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(btn, "Neso", "Neso",
JOptionPane.INFORMATION_MESSAGE);
}
}
谢谢。