JPasswordField的乱码问题
来源:互联网 发布:安畅网络财报 编辑:程序博客网 时间:2024/06/11 04:05
JPasswordField 用作密码的输入框,似乎很方便,但是,为了得到输入的内容,一般都会使用这样的方法去获取密码:
- JPasswordField input_password = new JPasswordField();
- String password = input_password.getPassword().toString();
这种方法比较合乎常理,因为input_password.getPassword() 方法得到的是一个字符数组,然而我想要的是一个字符串,于是,第一观感应该就是 toString()方法了,但是不可否认的是,toString之后的结果是乱码 ~ ~
乱码的原因:如果看下源码就知道,这里的toString()方法是继承自其父类Object的,它并没有重写这个方法,而Object 中的 toString()方法只是单纯的将字符数组强制转化为字符串,因此出现了乱码。官方api中也描述了这个事实:
Object
类的 toString
方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@
”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
解决方案:
- JPasswordField input_password = new JPasswordField();
- String inputPassword = String.valueOf(input_password.getPassword());
原因如下:
这个是官方的源码:
- public static String valueOf(char data[]) {
- return new String(data);
- }
从源码中可以看到,实际上valueOf()方法是通过new 一个String 对象来完成转化的
官方api 是这样解释new String(char data[ ])的:分配一个新的 String
,使其表示字符数组参数中当前包含的字符序列,可以看到,new后的字符串实际是原来字符数组序列表示,这正是想要的结果 ^ ^
也可用如下方式,效果是一样的,注意是TextField,而不是JTextField ,使用setEchoChar('*') 方法和上面的方法没有本质区别:
- TextField input_password = new TextField();
- input_password.setEchoChar('*');
- String inputPassword = input_password.getText().trim();
虽然这只是一个小小的问题,但是只有好好解决了诸多小问题,才能解决更多由小问题组成的大问题 ~ ~
http://blog.csdn.net/skl_tz/article/details/9009805
- JPasswordField的乱码问题
- JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
- JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
- JavaSE-JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
- JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
- JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
- JPasswordField的用法
- 获取JPasswordField的值
- jPasswordField
- 构造一般的JPasswordField组件
- 获取JPasswordfield内容的方法
- 获取JPasswordField内容的方法
- JPasswordField 密码类型如何获取其中的字符串
- 关于JPasswordField
- JPasswordField getPassword
- phpmyadmin的乱码问题
- MySQL的乱码问题
- phpmyadmin的乱码问题
- 热门免费Java游戏
- 测试你的手机的Java ENVIROMENT
- centos添加用户
- SDIO相关学习
- 1407311504-hd-不容易系列之二.cpp
- JPasswordField的乱码问题
- Plus One
- 执行与错误跟踪(7.31)
- mmc子系统学习笔记五 mmc子系统的代码组织
- CentOS6.5安装VirualBox虚拟机软件
- ajax 方法的使用以及方法中各参数的含义
- Android NoClassDefFoundError解决办法
- 类加载过程中静态变量的值变化细节
- <转>hbase基本概念和hbase shell