JAVA中JPasswordField实现密码的确认

这篇博客探讨了在Java GUI设计中如何验证JPasswordField输入的两次密码一致性。通过实验发现,直接使用getText()方法已被废弃,而getPassword()返回的char数组不能直接用equals()比较。解决方法是将char数组转换为String类型进行比较。同时,文章提出了对更简单比较方法的探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在设计注册模块时,经常要验证两次填写的密码是否一致,那么如何利用JPasswordField实现呢?

首先设计GUI界面:

实验1:利用getText()方法取得JPasswordField内容,但是这个方法已经被废弃。另外,简单地说,“equals()”与“==”比较一个对象的不同之处在于:“equals()”只比较对象的“内容”,而“==”比较的是对象的地址(当然,如果地址相同了,内容当然也相同)。

实验2:利用getPassword()方法取得JPasswordField内容,但是结果有点出乎意料,为什么passwordField1.getPassword().equals(passwordField2.getPassword())为假呢?

研究一下getPassword()方法:其返回值类型为char []。

那么char数组如何比较呢?下面这个方法不行。

package cn.edu.hbue.ghp; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class tainjia { public static void main(String[] args) { // TODO Auto-generated method stub java.sql.Connection connection = null; PreparedStatement preStmt = null; try{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/grade?user=root&"+"password=ghp"; connection = DriverManager.getConnection(url); if(connection != null){ System.out.println("连接成功"); } String sql = "insert into book(author,publisher,isbn,pubDate,price,categoryId)"+"values(?,?,?,?,?,?)"; preStmt = connection.prepareStatement(sql); preStmt.setString(1, "EDA技术"); preStmt.setString(2, "清华大学"); preStmt.setString(3, "1"); preStmt.setString(4, "2017-1-1"); preStmt.setDouble(5, 66); preStmt.setInt(6, 2); preStmt.executeUpdate(); preStmt.setString(1, "你要去相信,没有到不了的明天"); preStmt.setString(2, "湖南出版时"); preStmt.setString(3, "2"); preStmt.setString(4, "2014-11-13"); preStmt.setDouble(5, 32.8); preStmt.setInt(6, 1); preStmt.executeUpdate(); System.out.println("添加数据的行为数为"+preStmt.getUpdateCount()); }catch(ClassNotFoundException e){ System.out.println("JDBC driver error"); }catch(SQLException e){ System.out.println("JDBC operation error"); }finally{ try{ if(preStmt != null){ preStmt.close(); } }catch(SQLException e){ System.out.println("PreparedStatement close error"); } try{ if( connection != null){ connection.close(); } }catch(SQLException e){ System.out.println("PreparedStatement close error"); } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值