当前位置: 首页 > news >正文

JavaSwing之--JPasswordField

在这里插入图片描述

Java Swing之–JPasswordField应用详解

JPasswordField是一个轻量级组件,允许编辑单行文本,不会显示键入的原始字符,而是显示替代文本或图形。

JPasswordField的直接父类是JTextField,它继承了父类中的常用构造方法与普通方法。

关于JTextField组件已有详细介绍,故在讲解密码框时仅介绍有关密码输入、获取等紧密相关内容。

一、构造方法
方法名称功能描述
JPasswordField()构造一个新的 JPasswordField ,具有默认文档、null 起始文本字符串和 0 列宽。
JPasswordField(int columns)构造一个具有指定列数的新空 JPasswordField
JPasswordField(String text)构造一个用指定文本初始化的新 JPasswordField
JPasswordField(String text, int columns)构造一个用指定文本和列初始化的新 JPasswordField
JPasswordField(Document doc, String txt, int columns)构造一个新的 JPasswordField,它使用给定的文本存储模型和给定的列数。

JPasswordFiled构造方法在形式上与JTextField相似,用法相似,不再赘述。

二、一般方法

在继承JTextField一般方法基础上,JPasswordField封装了自由的一般方法用于实现对密码内容的各类操作。

方法名称功能描述
char[] getPassword()返回此 TextComponent 中包含的文本,返回类型是字符数组
char getEchoChar()返回用于表示密码的字符。
void setEchoChar(char c)为此 JPasswordField 设置表示密码的字符。
void setText(String t)设置密码框的内容
三、用法详解

用法讲解与代码实现均已创建的JPasswordField对象为例。

JPasswordField jPasswordField = new JPasswordField();
  • 设置密码框回显字符。调用方法 setEchorChar(char c),以给定的字符c作为回显字符在密码框中显示,表示密码。
jPasswordField.setEchoChar('#');//输入密码时文本框中显示#
  • 获取密码。调用getPassword()方法,返回密码形成的字符数组,如有必要可转化需要的数据类型。
// 将密码字段的字符数组转换为字符串
String str = String.valueOf(jPasswordField.getPassword());
// 在对话框中显示密码信息
JOptionPane.showMessageDialog(null,str);
  • 获取回显字符。调用方法getEchoChar()获得用以表示密码的字符
char echo = jPasswordField.getEchoChar();//字符为:#
四、拓展

在使用密码框构建界面时,有时需要明码显示密码,以确定是否输入正确,可以参照以下样式构建。

在这里插入图片描述

以上界面设计的逻辑为:

①创建一个JPanel面板对象

②在面板容器中添加一个JPasswordField对象

③在面板容器中再添加一个JLabel,用以放置眼睛图标

当需要明码显示输入密码时,值需要单价眼睛图标,在密码显示密码同时,眼睛图标从关闭状态转化为打开状态。在技术实现上,为JLabel对象注册鼠标事件监听,单击图标标签时通过调用setEchoChar()方法和setImage()方法改变显示状态,如下代码所示。

//创建一个全局的逻辑标记,表示密码框是否明码显示,默认显示符号。根据程序需要确定修饰符及作用域。private static boolean isshow = false;//默认false//创建一个JPanel对象作为放置密码框和眼睛图标标签的容器
JPanel jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.setBounds(100,120,300,50);// 创建一个密码输入框
JPasswordField jPasswordField = new JPasswordField();
// 设置密码输入框的位置和大小
jPasswordField.setBounds(0,10,265,30);
// 移除密码输入框的边框
jPasswordField.setBorder(BorderFactory.createEmptyBorder());
// 将密码输入框添加到面板上
jPanel.add(jPasswordField);// 创建一个标签,用于显示眼睛图标
JLabel  jLabel = new JLabel();
// 设置标签的位置和大小
jLabel.setBounds(270,10,30,30);// 加载并设置闭眼图标,初始默认是关闭状态
ImageIcon icon1 = new ImageIcon("image/eyeclose.png");
icon1.setImage(icon1.getImage().getScaledInstance(30,30,Image.SCALE_SMOOTH));
jLabel.setIcon(icon1);// 创建一个睁开的眼睛图标
ImageIcon icon2= new ImageIcon("image/eye.png");
icon2.setImage(icon2.getImage().getScaledInstance(30,30,Image.SCALE_SMOOTH));// 将标签添加到面板上
jPanel.add(jLabel);// 为标签添加鼠标事件监听器
jLabel.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {// 切换密码显示状态isshow = !isshow;// 根据显示状态设置密码输入框的回显字符jPasswordField.setEchoChar(isshow?(char)0:'*');// 根据显示状态更新眼睛图标jLabel.setIcon(isshow?icon2:icon1);}
});

基于以上技术实现逻辑,读者可根据喜好自定义组件满足程序功能需求。

五、总结

JPasswordField密码框能与其他组件组合形成定制化的密码输入组件,提升程序友好性。更多更强用法,请读者参考官方说明文档。

相关文章:

  • 电机试验平台:现代科技与工程应用的典范
  • 如何把TikTok的视频下载到本地?
  • Transformer时间序列预测
  • PDF文件转换之输出指定页到新的 PDF 文件
  • 封装一个Qt调用动态库的类
  • 【C++】位图
  • QPS 和 TPS 详解
  • 理想树图书:以科技赋能教育,开启AI时代自主学习新范式
  • spring切面
  • 三格电子——如何解决消防设备联网问题
  • C#实现图片缩略图生成:多种模式详解与实践
  • 3. JavaScript基础:自增自减、运算符优先级、条件语句、循环与错误处理
  • 帕金森常见情况解读
  • 【GESP真题解析】第 18 集 GESP 二级 2024 年 12 月编程题 1:寻找数字
  • 【面试 - 遇到的问题 - 优化 - 地图】腾讯地图轨迹回放 - 回放的轨迹时间要和现实时间对应(非匀速)
  • `docker commit` 和 `docker save`区别
  • JavaScript极致性能优化全攻略
  • Linux服务器运维10个基础命令
  • 一文读懂 STP:交换机接口状态详解及工作原理
  • 探讨分贝计在医疗环境中的具体应用及其重要性
  • 教育类网站开发费用/南京百度seo公司
  • 建筑网站新闻写那些好/客户管理软件crm排名
  • 汽车网站设计论文/360网站推广登录
  • 乌鲁木齐做网站的/买外链网站
  • 给家乡做网站/百度快照优化的优势是什么
  • wordpress 浮动代码/搜索引擎优化怎么做的