有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我做了一个简单的测试:

    我打开IE,选择了一个标签,在地址栏上,将中文输入法设置为半宽。然后单击另一个选项卡,IME将自动更改为全宽

    所以我认为这与Java无关。这是Windows的行为