JPasswordField组件尝试使用亚洲复合字符时出现不一致问题,我遇到了问题。

我的代码是:

    final JCheckBox visiblePassword = new JCheckBox();      // show/hide password checkbox
    JPasswordField passwordField = new JPasswordField();
    passwordField.setPreferredSize(new Dimension(200, 25));
    final char echoChar = passwordField.getEchoChar();
    visiblePassword.addActionListener(new ActionListener()  // show/hide password
    {
        public void actionPerformed(ActionEvent evt)
        {
            if(visiblePassword.isSelected()) passwordField.setEchoChar((char)0);
            else passwordField.setEchoChar(echoChar);
        }
    });


我的目标是允许所有字符输入密码。

然而:

Windows 8-根本不起作用(仅允许使用拉丁字符-IME不起作用)。

Mac OS X-允许使用朝鲜语字符(但不能将它们与一个字符结合在一起),日语和中文根本不起作用。

我可以在其他平台(例如iOS)上找到有关此问题的讨论和解决方案:

Selecting language of the keyboard for UITextField with secureTextEntry

但是对于Java swing没有任何帮助。

因此,在开始实现“ JPasswordField”的自定义版本之前,我想问一下:

有谁解决了这个问题,或者您知道其他一些像JPasswordField这样的组件,但是适合我的需求吗?

最佳答案

你知道这个链接吗? JPasswordField (Java Platform SE 8 )


  注意:默认情况下,JPasswordField禁用输入法;默认情况下,禁用输入法。否则,在使用输入法编写输入字符时可能会看到它们。如果应用程序需要输入法支持,请使用继承的方法enableInputMethods(true)。

09-16 01:09