求编程大神帮忙JAVA代码

这个程序是一个简单的用户登录代码可是为何输入账户密码确认总是不对importjavax.swing.*;importjava.awt.*;importjava.awt.e... 这个程序是一个简单的用户登录代码
可是为何输入账户密码 确认总是不对
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class LoginWindow extends JDialog implements ActionListener
{
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
JPanel p5=new JPanel();
JTextField txtUserName=new JTextField(15);
JPasswordField txtPassword=new JPasswordField(15);
JButton ok=new JButton("确定");
JButton cancel=new JButton("取消");
public LoginWindow()
{
setModal(true);
setBackground(Color.white);
Container contentPane=this.getContentPane();
contentPane.setLayout(new GridLayout(5,1));
p2.add(new JLabel("用户名:"));
p2.add(txtUserName);
p3.add(new JLabel("密 码:"));
p3.add(txtPassword);
p4.add(ok);
p4.add(cancel);
ok.addActionListener(this);
cancel.addActionListener(this);
txtUserName.addActionListener(this);
txtPassword.addActionListener(this);
contentPane.add(p1);
contentPane.add(p2);
contentPane.add(p3);
contentPane.add(p4);
contentPane.add(p5);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(300,200);
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((screen.width-300)/2,(screen.width-200)/2);
setTitle("登陆窗口");
setResizable(false);
setVisible(true);

}

/**
* @param args
*/
public static void main(String[] args) {
new LoginWindow();

}

public void actionPerformed(ActionEvent e) {
if(e.getSource()==ok||e.getSource()==txtPassword)
{
if(txtUserName.getText().trim().equals("abc")&&txtPassword.getPassword().toString().trim().equals("abc"))
this.dispose();

else
{
JOptionPane.showMessageDialog(null,"用户名或密码错误,请重新输入");
txtUserName.requestFocus();
txtUserName.setSelectionStart(0);
txtUserName.setSelectionEnd(txtUserName.getText().length());
}
}
else if(e.getSource()==cancel)
{
this.dispose();
System.exit(0);
}
else if(e.getSource()==txtUserName)
txtPassword.requestFocus();
}

}
展开
 我来答
nyoal
2012-12-14
知道答主
回答量:5
采纳率:0%
帮助的人:3.3万
展开全部
建议:
txtPassword.getPassword().toString().trim().equals("abc")
改为
String.valueOf(txtPassword.getPassword()).trim().equals("abc")
原因:
首先,getPassword()得到的就时char数组
char[] 数组转换成String可使用new String(char[]); 或 String.valueOf(char[]);
如果char数组调用toString()时,是调用的Object类的toString()方法。如下:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
所以想通过toString转为字符串,得到的结果会让人感到意外。
String类把toString类型重载了,所以自然地得到的便是字符串。
创作者ketete
2012-12-14 · TA获得超过2372个赞
知道小有建树答主
回答量:1526
采纳率:0%
帮助的人:1199万
展开全部
应该是得到txtPassword的文本写错了,你可以System.out.print()输出试试

我记得是这样得到的 new String(txtPassword.getPassword())
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TiooBeoo
2012-12-14 · TA获得超过542个赞
知道小有建树答主
回答量:283
采纳率:0%
帮助的人:277万
展开全部
if(txtUserName.getText().trim().equals("abc")&&txtPassword.getPassword().toString().trim().equals("abc"))

这句里用户名少了个toString() 看看是不是这里的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heweidong808
2012-12-14
知道答主
回答量:6
采纳率:0%
帮助的人:9437
展开全部
public void actionPerformed(ActionEvent e) {
String name = txtUserName.getText();
String password = new String(txtPassword.getPassword());
if(name.equals("abc") && password.equals("123")) {
JOptionPane.showMessageDialog(null, "登陆成功!");
} else {
JOptionPane.showMessageDialog(null, "登陆失败!");
}
}
试一下,看可以不
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmy_sk521
2012-12-14 · TA获得超过2272个赞
知道小有建树答主
回答量:1330
采纳率:73%
帮助的人:751万
展开全部
把txtPassword.getPassword().toString().trim()改为
String.valueOf(txtPassword.getPassword()).trim()
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式