2 baidu 25373765 baidu_25373765 于 2015.06.10 16:57 提问

java编程中我想用显示密码把密码显示出来了然而登录却有错 求解 急用 (我想了一天实在没法了)

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class weixin extends JFrame implements ActionListener {

JPanel panmain;                  //面板
JLabel lblname,lblpassword,lblphoto;      //标签
JLabel first,second,three;
JButton btnlogin;                //按钮
JTextField txtname;             // 单行文本框
JTextField txtpassword;          //单行文本框
JPasswordField pwdpassword;      //密码框
JCheckBox chkbold;               //复选框
Dimension dsSize;
Toolkit toolkit=Toolkit.getDefaultToolkit();
public weixin(){
    super("登录微信");
    panmain =new JPanel();                  //实例化面板       
    this.getContentPane().add(panmain);

    lblname=new JLabel("账号:");        
    txtname=new JTextField(18);          //实例化长度为18的文本框对象
    lblpassword=new JLabel("密码:");
    txtpassword=new JTextField(18);

    pwdpassword=new JPasswordField(18);  //实例化长度为18的文本框对象
    chkbold=new JCheckBox("显示密码");
    btnlogin=new JButton("登录");
    first=new JLabel("忘记密码?");
    second=new JLabel("创建新账号");
    three=new JLabel("切换接入点?");


   // Font fontstr=new Font("宋体",Font.PLAIN,12);
  //  lblname.setFont(fontstr);


  //  lblname.setForeground(Color.GREEN); 
   // lblpassword.setForeground(Color.GREEN); 
    btnlogin.setBackground(Color.GREEN);     //设置按钮颜色为绿色

    panmain.setLayout(null);                  //空布局
    lblname.setBounds(6,50,400,25);           //对‘账号’实行空布局
    txtname.setBounds(40,50,210,25);          // 对文本框实行空布局
    lblpassword.setBounds(6,80,500,25);       //对’密码‘实行空布局
    pwdpassword.setBounds(40,80,210,25);      //对密码文本框实行空布局
    txtpassword.setBounds(40,80,210,25);
    chkbold.setBounds(5,116,80,25);           //对复选框实行空布局
    btnlogin.setBounds(150,120,99,25);        //对按钮实行空布局

    first.setBounds(6,160,600,25);
    second.setBounds(6,190,700,25);
    three.setBounds(6,220,800,25);




  //pwdpassword=new JPasswordField();
  //panmain.setToolTipText("登录到服务器");

   // lblphoto=new JLabel();    //添加主面板背景(方法1)
   //  Image image1=new ImageIcon("./src/weixin1.jpg").getImage();
   // lblphoto.setIcon(new ImageIcon(image1));

    //panmain.setBackground(Color.black);
      Icon logol=new ImageIcon("./src/weixin1.jpg");   // //添加主面板背景(方法2)
      lblphoto=new JLabel(logol);
      lblphoto.setBounds(0,0,266,394);
      panmain.add(lblphoto);
      chkbold.addActionListener(this);
      txtpassword.addActionListener(this);
      // panmain.add(lblname);           //添加标签‘账号’到主面板
       // panmain.add(lblpassword);      //添加标签‘密码’到主面板
        //panmain.add(txtname);          //添加单行文本框到主面板
        //panmain.add(pwdpassword);      //添加密码框到主面板
        //panmain.add(chkbold);         //添加复选框到主面板
        //panmain.add(btnlogin);        //添加按钮到主面板

  // lblname.setFont (fontstr);   
    lblphoto.add(lblname);
    lblphoto.add(lblpassword);
    lblphoto.add(txtname);
    lblphoto.add(pwdpassword);
    lblphoto.add(chkbold);
    lblphoto.add(btnlogin);
    lblphoto.add(first);
    lblphoto.add(second);
    lblphoto.add(three);
    lblphoto.add(txtpassword);

    setContentPane(lblphoto);
    setSize(266,400);
    setVisible(true);
    setResizable(false);

    dsSize=toolkit.getScreenSize();
    //this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLocation(dsSize.width/2-this.getWidth()/2,
    dsSize.height/2-this.getHeight()/2);
    Image img=toolkit.getImage("./src/1.jpg");
    setIconImage(img);

            }
public static void main(String args[]) {
   new weixin();

}
   public void actionPerformed1(ActionEvent ae)
            {        
            if(ae.getSource()==btnlogin){
                    if(pwdpassword.getText().equals("admin")) && (pwdpassword.getText().equals("admin")))
                JOptionPane.showMessageDialog(null,"用户登录成功");
                    else
                        JOptionPane.showMessageDialog(null,"用户名或密码错误");                             
                  }     
                }

        }

4个回答

devmiao
devmiao   Ds   Rxr 2015.06.10 17:00

JPasswordField和JTextField叠放,隐藏前者显示后者

baidu_25373765
baidu_25373765 哥哥 你说这个问题我们老师也是这样对我说的 但是我人蠢 写不来这几步 你可以帮我写哈 吗???谢谢
2 年多之前 回复
Juforg
Juforg   2015.06.10 16:59

一般是 两个 输入框 一个输入框不显示秘密 一个输入框 显示秘密 点击按钮之后 这两个框 切换显示 并交换数据

baidu_25373765
baidu_25373765 是这个意思 能不能帮我写哈 这几句啊 真心感谢!!大哥
2 年多之前 回复
qq_22202859
qq_22202859   2015.06.10 17:00

勾选显示密码 调用setEchoChar(0)
不勾选 调用 setEchoChar('*')

qq_22202859
qq_22202859 额,你要显示的话,就用JPasswordField 这个控件点setEchoChar('\0')方法设置,不显示就用setEchoChar('*')
2 年多之前 回复
baidu_25373765
baidu_25373765 能不能具体点 哥哥 我初学不懂哦
2 年多之前 回复
tongyi55555
tongyi55555   2015.06.10 18:42

两个问题,
1、你实现了ActionListener接口,但是没有写实现方法;
2、在实现ActionListener方法中增加单选框的监听实践即可。
下面的代码实现了,输入的密码可以明文显示,明文密码显示 时做的更改可以同步到密码框。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class weixin extends JFrame implements ActionListener {
    JPanel panmain; // 面板
    JLabel lblname, lblpassword, lblphoto; // 标签
    JLabel first, second, three;
    JButton btnlogin; // 按钮
    JTextField txtname; // 单行文本框
    JTextField txtpassword; // 单行文本框
    JPasswordField pwdpassword; // 密码框
    JCheckBox chkbold; // 复选框
    Dimension dsSize;
    Toolkit toolkit = Toolkit.getDefaultToolkit();

    public weixin() {
        super("登录微信");
        panmain = new JPanel(); // 实例化面板
        this.getContentPane().add(panmain);

        lblname = new JLabel("账号:");
        txtname = new JTextField(18); // 实例化长度为18的文本框对象
        lblpassword = new JLabel("密码:");
        txtpassword = new JTextField(18);

        pwdpassword = new JPasswordField(18); // 实例化长度为18的文本框对象
        chkbold = new JCheckBox("显示密码");
        btnlogin = new JButton("登录");
        first = new JLabel("忘记密码?");
        second = new JLabel("创建新账号");
        three = new JLabel("切换接入点?");

        // Font fontstr=new Font("宋体",Font.PLAIN,12);
        // lblname.setFont(fontstr);

        // lblname.setForeground(Color.GREEN);
        // lblpassword.setForeground(Color.GREEN);
        btnlogin.setBackground(Color.GREEN); // 设置按钮颜色为绿色

        panmain.setLayout(null); // 空布局
        lblname.setBounds(6, 50, 400, 25); // 对‘账号’实行空布局
        txtname.setBounds(40, 50, 210, 25); // 对文本框实行空布局
        lblpassword.setBounds(6, 80, 500, 25); // 对’密码‘实行空布局
        pwdpassword.setBounds(40, 80, 210, 25); // 对密码文本框实行空布局
        txtpassword.setBounds(40, 80, 210, 25);
        chkbold.setBounds(5, 116, 80, 25); // 对复选框实行空布局
        btnlogin.setBounds(150, 120, 99, 25); // 对按钮实行空布局

        first.setBounds(6, 160, 600, 25);
        second.setBounds(6, 190, 700, 25);
        three.setBounds(6, 220, 800, 25);

        // pwdpassword=new JPasswordField();
        // panmain.setToolTipText("登录到服务器");

        // lblphoto=new JLabel(); //添加主面板背景(方法1)
        // Image image1=new ImageIcon("./src/weixin1.jpg").getImage();
        // lblphoto.setIcon(new ImageIcon(image1));

        // panmain.setBackground(Color.black);
        Icon logol = new ImageIcon("./src/weixin1.jpg"); // //添加主面板背景(方法2)
        lblphoto = new JLabel(logol);
        lblphoto.setBounds(0, 0, 266, 394);
        panmain.add(lblphoto);
        chkbold.addActionListener(this);
        txtpassword.addActionListener(this);
        // panmain.add(lblname); //添加标签‘账号’到主面板
        // panmain.add(lblpassword); //添加标签‘密码’到主面板
        // panmain.add(txtname); //添加单行文本框到主面板
        // panmain.add(pwdpassword); //添加密码框到主面板
        // panmain.add(chkbold); //添加复选框到主面板
        // panmain.add(btnlogin); //添加按钮到主面板

        // lblname.setFont (fontstr);
        lblphoto.add(lblname);
        lblphoto.add(lblpassword);
        lblphoto.add(txtname);
        lblphoto.add(pwdpassword);
        lblphoto.add(chkbold);
        lblphoto.add(btnlogin);
        lblphoto.add(first);
        lblphoto.add(second);
        lblphoto.add(three);
        lblphoto.add(txtpassword);

        setContentPane(lblphoto);
        setSize(266, 400);
        setVisible(true);
        setResizable(false);

        dsSize = toolkit.getScreenSize();
        // this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocation(dsSize.width / 2 - this.getWidth() / 2, dsSize.height / 2
                - this.getHeight() / 2);
        Image img = toolkit.getImage("./src/1.jpg");
        setIconImage(img);

    }

    public static void main(String args[]) {
        new weixin();

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getSource() == chkbold) {
            if (chkbold.isSelected()) {
                System.out.println("ssdds");
                String password = new String(pwdpassword.getPassword());
                txtpassword.setText(password);
                pwdpassword.setVisible(false);
                txtpassword.setVisible(true);
            } else {
                String password = txtpassword.getText();
                pwdpassword.setText(password);
                pwdpassword.setVisible(true);
                txtpassword.setVisible(false);
            }
        }
    }
}
tongyi55555
tongyi55555 回复baidu_25373765: pwdpassword.getText()获取的已经是加密的密码了,不是你输入的admin,因此不能这么比较,看看我怎么写的。况且不要用两个条件,因为显示密码框和密码框的内容可能不同步。
2 年多之前 回复
baidu_25373765
baidu_25373765 回复baidu_25373765: public void actionPerformed1(ActionEvent ae){ if(ae .getSource()==btnlogin){ if(txtpassword.getText().equals("admin")) && (pwdpassword.getText().equals("admin"))) JOptionPane.showMessageDialog(null,"用户登录成功"); else JOptionPane.showMessageDialog(null,"用户名或密码错误"); } } }我这段为什么我登录他却有问题 呢?
2 年多之前 回复
baidu_25373765
baidu_25373765 前面那哥 们 没给我说明白 我看都叫看不懂 急死我了哦
2 年多之前 回复
baidu_25373765
baidu_25373765 哥 太感谢你 简直就是雪中送炭啊 太感动了 我就是写不来这个方法 把我搞了一天了 加你为好有可以吗??
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片