java - PasswordField 的 Java Swing 占位符
问题描述
正如您从标题中看到的那样,我在组织/解决一个小问题时遇到了一些麻烦。为密码字段写了一个类。我基本上想在密码字段中插入一个占位符,当用户单击密码字段以显示该字段实际上是密码时,它将提示(如果您愿意)或默认文本设置为零。
想为一个小项目建立一个登录框架。任何答案表示赞赏。
问题包含当用户单击它时不知道如何将默认文本(密码文本)剪切为零
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class externPlaceholderPasswordField extends JPasswordField
{
private String pw;
public externPlaceholderPasswordField(String pw)
{
this.pw = pw;
}
public char[] getPassword()
{
char[] password = super.getPassword();
if(password.trim().length() == 0 && pw != null)
{
password = pw;
}
return password;
}
@Override
public void paintComponent(Graphics g)
{
setHorizontalAlignment(externPlaceholderTextField.CENTER);
super.paintComponent(g);
if (super.getPassword().length() > 0 || pw == null)
{
return;
}
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(Color.lightGray);
g2.drawString(pw, getInsets().left, g.getFontMetrics().getMaxAscent() + getInsets().top);
}
}
解决方案
推荐阅读
- firebase - 数据功能不起作用反应本机 Firestore
- tkinter - 如何以 .png 格式保存画布屏幕(tkinter)?
- javascript - WKWebView,使用javascript提交表单
- project - 如何重用 Qbs 项目的属性?
- css - 如何轻松匹配多个子类名称?
- wpf - 从 Windows Form/WPF 访问 PowerShell 的 office 365 身份验证弹出窗口
- mysql - 匹配两组数字是否相等
- javascript - 如何重复使用 cookie,以便网站知道我已经接受了这些条款?
- amazon-web-services - 来自 EC2 和 Lambda 的 AWS S3 访问被拒绝
- c# - Canvas.children: System.ArgumentException: '指定的索引已在使用中。首先断开指定索引处的 Visual 子级。