现在的位置: 首页 > 综合 > 正文

Java JPasswordField用法解析——toString方法

2013年09月25日 ⁄ 综合 ⁄ 共 1206字 ⁄ 字号 评论关闭

环境:SQLServer 2008 R2 + MyEclipse 6.5 + JDK 1.6.24

问题:当使用JPasswordField类接收用户的密码,单击注册按钮无反应,向数据库插入数据时出现不可预期的结果。

如下图红色标识处(数据库数据):

 

 

分析一下可知,这是表示一个类的HashCode,很显然插入的数据中有一个类的HashCode表示。

代码如下(截取):

                private JPasswordField tf_upwd, tf_ok;// tf_upwd为输入密码框 tf_ok为确认密码的输入框
                String userPwd;//接收输入密码
                String userPwdOk;//接收输入的确认密码

                //userPwd = tf_upwd.getText();
		userPwd = tf_upwd.getPassword().toString();
		System.out.println(userPwd);
                //userPwdOk = tf_ok.getText();
		userPwdOk = tf_ok.getPassword().toString();
		System.out.println(userPwdOk);

		//看下打印的结果:

                //[C@601bb1
                //[C@1ba34f2

		if (jb_ok  == e.getSource()){
			System.out.println("hh");
                  //if(userPwdOk.equals(userPwd)){
			// userPwdOk.equals(userPwd)判断前后输入的密码是否一致,因为toString是表示一个类的文本显示,如果没重写,则返回该类的HashCode,如果对象不同,很显然HashCode不一致,对比是否相等很显然返回false
			boolean isRegistSuc = false;
			isRegistSuc = uDeal.registUser(deptId, userAccount, userPwd, userName, userGender, userPhone, userEmail);//注册用户方法
			if (isRegistSuc) {
				JOptionPane.showMessageDialog(this, "注册成功");
			}else {
				JOptionPane.showMessageDialog(this, "注册失败");
			}		
                //}
			
		}

看下Object类的toString方法源码:

public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

总结:JPasswordField 的getPassword()方法返回char数组,调用toString方法返回其HashCode。如果需要显示文本内容,可以重写toString方法。如果要得到输入的密码,可以使用JPasswordField的getText方法。

抱歉!评论已关闭.