java 按钮编程 android输入三次密码 错误自动退出 用的是jpasswordfield 按钮有 取消和确定

JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
JPasswordField 用作密码的输入框,似乎很方便,但是,为了得到输入的内容,一般都会使用这样的方法去获取密码:
JPasswordField input_password = new JPasswordField();&
String password = input_password.getPassword().toString();&
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());&
JPasswordField input_password = new JPasswordField();
String inputPassword = String.valueOf(input_password.getPassword());使用String.valueOf( )可以有效的解决这个问题
原因如下:
这个是官方的:
public static String valueOf(char data[]) {&
&&& return new String(data);&
&&& 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();&
&TextField input_password = new TextField();
&input_password.setEchoChar('*');
&String inputPassword = input_password.getText().trim();
虽然这只是一个小小的问题,但是只有好好解决了诸多小问题,才能解决更多由小问题组成的大问题 ~ ~java 用JPasswordField 创建密码输入框,当输入的密码错误时,如何实现自动清空密码?_百度知道
java 用JPasswordField 创建密码输入框,当输入的密码错误时,如何实现自动清空密码?
有没有什么方法去自动清空已经输入错误的密码?
JPasswordField类没有clear()方法啊!
提问者采纳
让JPasswordField的text值为 &&(空字符串) 不就行了么~
提问者评价
其他类似问题
为您推荐:
其他1条回答
JPasswordField .clear();
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用java编写一种登录框:密码正确则显示登陆成功,错误三次显示登陆失败然后退出.点退出则退出!求高手帮忙!_百度知道
用java编写一种登录框:密码正确则显示登陆成功,错误三次显示登陆失败然后退出.点退出则退出!求高手帮忙!
提问者采纳
码&quot.equals(btnOK))
int i=0.exit(0).blue).white);/ JButton btnOK=new JButton(&
JOptionP注册监听器
btnC/ } @Override public void actionPerformed(ActionEvent arg0)
/&#47,JOptionPane.println(&).setBackground(C
S用户名&确定&quot.setVisible(true).getPassword()); 2);
lg, 70.FlowL提示&quot,JOptionP), &
System.getScreenSize();登录成功, 20); public static void main(String[] args)
Login lg=new Login();
lbName.add(textPwd), 20);
Dimension screenSize =
Toolkit!&**
* @param args
btnOK;); 2)).win.public class Test { &#47.out.setBounds(160;
btnOK,50.height &#47.getContentPane(), 50;&#47.println(&&#47,&quot.addActionListener(this);).out, &quot.setBounds(50.T提示&System.DEFAULT_OPTION).width &#47.showConfirmDialog(null.C
JTextField textName =new JTextField();
this.awt.setResizable(false)..showConfirmDialog(null,&
textPSystem.*, 20); JPasswordField textPwd =new JPasswordField();
String Pawd=new String( textPwd, &
&#47.Dimension.setLayout(null);对话框
i=i+1.setBounds(50, 70.event.win, 200).setSize(300;注册监听器
this, &import com, 20); JLabel lbPwd=new JLabel(&.&#47.equals(&quot.ActionL))
&#47.setBounds(50;登录失败&这个是调用package com.setTitle(&);
this.getText();
&#47.*;)&&P
lbName, 70;/);
}} /import javax.DEFAULT_OPTION);).awt.DEFAULT_OPTION);
this.getSource().add(textName).awt.getDefaultToolkit().lcq,JOptionP提示&quot.getHeight() &#47, 100.add(lbPwd).*, 70.setForeground(Color.setBounds(120; JLabel lbName=new JLabel(&quot.addActionListener(this);import java.awt,&quot,
screenS.getSource(), 100;; public Login() {
this.equals(&!&登录窗体&quot.white);aaa&你退出了系统;
this.equals(btnCancel))
JOptionPane.add(lbName),20);
btnC用户名或密码错误;
lbP!&quot,50;
if(arg0;登录成功;
}while(true).DEFAULT_OPTION).import com.exit(0);3)
JOptionPane.lcq,&quot.setBounds(120;public class Login extends JFrame implements ActionListener{ &#47.showConfirmDialog(null, 100;&#47.add(btnOK);
if(i&gt.add(btnCancel).ActionE提示& 2 - (package com, 100!&用户名或密码错误;&取消&quot.showConfirmDialog(
JOptionPane.getWidth() &#47.data,JOptionPane, 20);ALT +&/aaa&
String name=textN事件处理方法 {
lbPwd.setLocation (screenSize.setForeground(C JButton btnCancel =new JButton(&import java.import java.DataOperator
提问者评价
谢谢,有点小模糊!
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎样使用java中JPasswordField组件?_百度知道
怎样使用java中JPasswordField组件?
JPasswordField dd = new JPasswordField(&1234&);char[] pwd = dd.getPassword();//获取密码System.out.println(new String(pwd));//转换成字符串输出
其他类似问题
为您推荐:
提问者采纳
getPassword()返回的是char型的数组.showMessageDialog(null.JOptionPane.copyValueOf(password,你可以用Stringpassword.copyValueOf()把char数组转换成字符串,String
提问者评价
谢谢啊!!!
java的相关知识
其他3条回答
password.getPassword();改成
password.getText();
password.getPassword(); password.getText(); 你看看上面两个的返回值就知道了。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 windows编程按钮 的文章

 

随机推荐