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() {
    @Override
    public void mouseClicked(MouseEvent e) {
        // 切换密码显示状态
        isshow = !isshow;
        // 根据显示状态设置密码输入框的回显字符
        jPasswordField.setEchoChar(isshow?(char)0:'*');
        // 根据显示状态更新眼睛图标
        jLabel.setIcon(isshow?icon2:icon1);
    }
});

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

五、总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值