首页 > 解决方案 > 为什么 Java Swing 中存在 JPasswordField 类?

问题描述

我知道 JPasswordField 类的作用,以及如何/何时使用它。这不是问题,只是为了清楚起见。

我不明白为什么它的功能不能成为 JTextField 的一部分:如果他们让 getEchoChar/setEchoChar 方法在 JTextField 类中可见,会出现什么问题?在将 JTextField 和 JPasswordField 设计为单独的组件时,他们试图避免的具体情况是什么?

在文档中,他们说:

JTextField

...

不直接提供方法 setEchoChar 和 getEchoChar 以避免可插入外观的新实现无意中暴露密码字符。为了提供类似密码的服务,一个单独的类 JPasswordField 扩展了 JTextField 来为这个服务提供一个独立的可插入的外观和感觉。

JPasswordField

...

JPasswordField 旨在与用于 echoChar 集的 java.awt.TextField 源兼容。它是单独提供的,以便更容易安全地更改 JTextField 的 UI,而不会影响密码条目。

但我真的无法理解它们的意思(特别是在“避免可插入的外观无意中暴露密码字符”)。

标签: javaswingjtextfieldjpasswordfield

解决方案


推荐阅读