【问题标题】:How to diable IME in javafx password field如何在 javafx 密码字段中禁用 IME
【发布时间】:2017-11-24 11:42:03
【问题描述】:

在网页中,可以设置密码字段来禁用微软输入法,以防止用户输入其他语言字符。例如中文或日文字符不能在该字段中输入。

但在 javafx UI 中,我很容易将汉字放入密码字段。当我在密码字段中输入字符时,谁知道如何禁用 Microsoft IME?我只想在密码字段中输入数字、符号和英文字符。

【问题讨论】:

  • 使用包含非拉丁字符的密码可以提高安全性。

标签: javafx passwords ime


【解决方案1】:

如果你真的想限制可用于密码的字符范围,你可以测试一下:

Pattern pattern = Pattern.compile("[a-zA-Z0-9\\-\\+]*");

PasswordField passwordField = new PasswordField();
passwordField.setTextFormatter(new TextFormatter<String>(change -> {
    if(pattern.matcher(change.getText()).matches()) {
        return change;
    }

    return null;
}));

【讨论】:

  • 这不是一个完美的解决方案。在网页中,如果您将输入法更改为中文,当您按下该键时,也会输入密码。看来您没有将输入法更改为中文。但是如果你用这段代码作为过滤器,当你的输入法是中文时,你就不能输入任何东西了。
  • 这需要一个单独的 KeyEvents 捕获缓冲区。理论上看起来很简单,但实际上水下的石头很多——Caps Lock的状态、光标的位置……
猜你喜欢
  • 2014-02-07
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 2017-11-11
  • 2019-01-10
  • 1970-01-01
相关资源
最近更新 更多