JTextField.getText() 和 JPassword.getPassword() 的区别

首先需要知道 JTextField 和 JPassword 的位置:
java.lang.Object
   java.awt.Component
      java.awt.Container
          javax.swing.JComponent
                  javax.swing.JTextField
                      javax.swing.JPasswordField

顾名思义,JTextField处理的是普通文本域,JPasswordField处理的是密码文本域.
JTextField 的 getText() 是从 JTextComponent类 中继承而来的,返回String类型.当取得值为空值的时候,(equals(""))返回为 true.如:

JTextField nameTextField = new JTextField(10); //表示创建的文本域有10个字符长度
if(nameTextField.getText().equals("")) { //true
     System.out.println("一定能显示这条语句");
}
JPasswordField 的 getText() 已经过期, 用getPassword() 代替, 返回char[] 数组类型.因为是char[]类型,其equals方法是来自最原始的Object类, 其相当于"=="(比较两者的地址是否一致,即指向的内存是否相同).所以永远都不会相等,即当遇到数组类型时,不能用equals方法来比较.应该把char[] 类型转化为String类型(因为String类型的equals被String类override过,表示对比两者的内容是否相等).

char[]数组转变成String类型有两种方法:
1.nameTextField.getPassword().toString() 
    我们试着去把这打印出来,发现是类似"[C@35ce36"的,即不能提取出来,原因是这里调用的还是Object的toString方法,它的值遵循这个公式: " getClass().getName() + '@' + Integer.toHexString(hashCode()) ". 所以这个方法不行.
2.String.valueOf( nameTextField.getPassword() ) 
   经过检验,发觉这个方法能真实的返回文本框中输入的字符串.所以此方法work.
   用法:
   if(String.valueOf( nameTextField.getPassword()).equals("")) {
         System.out.println("一定能显示这条语句");
   }
   注意: 不能用 == "" 来代替 .equals("") , 前者表示比较两者地址是否相等,后者表示比较两者内容是否相等.
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值