Java中Windows 7输入法的swing字符宽度自动切换
我有几种输入法,可以在Windows 7中输入(繁体中文)台语。此外,所有的输入法都有一个切换字符宽度的选项(单字节/双字节字符)
- 中文(繁体)-新快
- 中国(传统)-长街
- 中文(繁体)-快速
- 中文(繁体)-语音
- 中文(繁体)-新语音学
- 中国(传统)-新长街
如果我在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);
}
}
谢谢
# 1 楼答案
我做了一个简单的测试:
我打开IE,选择了一个标签,在地址栏上,将中文输入法设置为半宽。然后单击另一个选项卡,IME将自动更改为全宽
所以我认为这与Java无关。这是Windows的行为