2015-03-03 67 views
2

我嘗試使用亞洲複合字符的JPasswordField組件的不一致行爲有問題。使用亞洲語言(韓語,日語,中文)在Java swing(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擺動但是一無所獲。

於是開始之前,我的一個定製版本的實現「JPasswordField中」我想問一下:

有誰解決這個問題,或者你知道像JPasswordField中一些其他的組成部分,但適合我的需要?

回答

2

您是否知道此鏈接? JPasswordField (Java Platform SE 8)

注意:默認情況下,JPasswordField禁用輸入法;否則,使用輸入法編寫輸入字符時可以看到輸入字符。如果應用程序需要輸入方法支持,請使用繼承的方法enableInputMethods(true)。

+0

是的,它看起來很有效。我已經看到,但沒有測試它,有一句話「默認情況下,輸入法支持已啓用。」在上下文幫助。但是文本可能是從java.awt.Component繼承而來 - 謝謝!我會重新測試它,然後接受答案。 – Metatron 2015-03-03 11:21:48