Panashe Dumbu
Panashe Dumbu

Reputation: 11

Error with txfPassword.setEchoChar((char)0);

I am coding a login UI page which requires users to enter their credentials, however the line of code that is meant to "hide" the characters they enter in the password field is not working. I am coding using Netbeans version 12.1 in java. A copy of the method is below and the line of code that isn't working is between the asterisks.

private void lblHideMouseClicked(java.awt.event.MouseEvent evt) {                                     
        
        ** txfPassword.setEchoChar((char)0); **
        lblHide.setVisible(false);
        lblHide.setEnabled(false);
        lblShow.setVisible(true);
        lblShow.setEnabled(true);
        
    }  

The error message when ran is:

error: cannot find symbol txfPassword.setEchoChar((char)0);

symbol:   method setEchoChar(char)

location: variable txfPassword of type JTextField

Whole code is below:


import javax.swing.JOptionPane;

/**
 *
 * @author panashe
 */
public class LogInScreen extends javax.swing.JFrame {

    StudentArray students = new StudentArray();

    /**
     * Creates new form LogIn
     */
    public LogInScreen() {
        initComponents();
    this.getContentPane().setBackground(new java.awt.Color(221,188,149));
       
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        lblHeading = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jPanel3 = new javax.swing.JPanel();
        btnBack = new javax.swing.JButton();
        lblProfileIcon = new javax.swing.JLabel();
        lblUsernameUnderline = new javax.swing.JLabel();
        lblPasswordUnderline = new javax.swing.JLabel();
        lblHide = new javax.swing.JLabel();
        lblShow = new javax.swing.JLabel();
        txfUsername = new javax.swing.JTextField();
        txfPassword = new javax.swing.JTextField();
        lblFirstname = new javax.swing.JLabel();
        lblSurname = new javax.swing.JLabel();
        btnNext = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(800, 600));
        setUndecorated(true);
        setPreferredSize(new java.awt.Dimension(850, 540));
        setSize(new java.awt.Dimension(850, 540));
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel1.setBackground(new java.awt.Color(98, 109, 113));
        jPanel1.setLayout(null);

        lblHeading.setFont(new java.awt.Font("Perpetua", 1, 100)); // NOI18N
        lblHeading.setForeground(new java.awt.Color(221, 188, 149));
        lblHeading.setText("Log In");
        jPanel1.add(lblHeading);
        lblHeading.setBounds(70, 200, 320, 110);

        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setIcon(new javax.swing.ImageIcon("C:\\Users\\*****\\*******\\icons8_globe_70px_1.png")); // NOI18N
        jPanel1.add(jLabel1);
        jLabel1.setBounds(30, 410, 110, 100);

        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 430, 630));

        jPanel3.setBackground(new java.awt.Color(221, 188, 149));
        jPanel3.setLayout(null);

        btnBack.setBackground(new java.awt.Color(221, 188, 149));
        btnBack.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        btnBack.setText("BACK");
        btnBack.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBackActionPerformed(evt);
            }
        });
        jPanel3.add(btnBack);
        btnBack.setBounds(70, 450, 110, 50);

        lblProfileIcon.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblProfileIcon.setIcon(new javax.swing.ImageIcon("C:\\Users\\*****\\*******\\icons8_contacts_50px.png")); // NOI18N
        jPanel3.add(lblProfileIcon);
        lblProfileIcon.setBounds(350, 170, 60, 50);
        lblProfileIcon.getAccessibleContext().setAccessibleParent(lblHeading);

        lblUsernameUnderline.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblUsernameUnderline.setText("______________________________");
        jPanel3.add(lblUsernameUnderline);
        lblUsernameUnderline.setBounds(40, 190, 310, 40);

        lblPasswordUnderline.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblPasswordUnderline.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblPasswordUnderline.setText("______________________________");
        jPanel3.add(lblPasswordUnderline);
        lblPasswordUnderline.setBounds(20, 300, 330, 40);

        lblHide.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblHide.setIcon(new javax.swing.ImageIcon("C:\\Users\\*****\\*******\\icons8_invisible_50px_1.png")); // NOI18N
        lblHide.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                lblHideMouseClicked(evt);
            }
        });
        jPanel3.add(lblHide);
        lblHide.setBounds(350, 290, 50, 40);

        lblShow.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblShow.setIcon(new javax.swing.ImageIcon("C:\\Users\\*****\\*******\\icons8_eye_50px.png")); // NOI18N
        lblShow.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                lblShowMouseClicked(evt);
            }
        });
        jPanel3.add(lblShow);
        lblShow.setBounds(350, 290, 50, 40);

        txfUsername.setBackground(new java.awt.Color(221, 188, 149));
        txfUsername.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        txfUsername.setText("Technology");
        txfUsername.setToolTipText("Enter username");
        txfUsername.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txfUsernameActionPerformed(evt);
            }
        });
        jPanel3.add(txfUsername);
        txfUsername.setBounds(40, 180, 290, 42);

        txfPassword.setBackground(new java.awt.Color(221, 188, 149));
        txfPassword.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        txfPassword.setText("Panashe");
        txfPassword.setToolTipText("Enter password");
        txfPassword.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txfPasswordActionPerformed(evt);
            }
        });
        jPanel3.add(txfPassword);
        txfPassword.setBounds(40, 290, 290, 38);

        lblFirstname.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblFirstname.setText("Enter username:");
        jPanel3.add(lblFirstname);
        lblFirstname.setBounds(40, 130, 150, 52);

        lblSurname.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblSurname.setText("Enter Password:");
        jPanel3.add(lblSurname);
        lblSurname.setBounds(40, 250, 140, 22);

        btnNext.setBackground(new java.awt.Color(221, 188, 149));
        btnNext.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        btnNext.setText("NEXT");
        btnNext.setMinimumSize(new java.awt.Dimension(800, 600));
        btnNext.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNextActionPerformed(evt);
            }
        });
        jPanel3.add(btnNext);
        btnNext.setBounds(270, 450, 110, 50);

        getContentPane().add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 0, 450, 610));

        pack();
        setLocationRelativeTo(null);
    }// </editor-fold>                        

    private void txfUsernameActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    private void txfPasswordActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {                                        

        if (students.existingProfile(txfUsername.getText(), txfPassword.getText()) == true) {
            
            JOptionPane.showMessageDialog(null, "Successful login");
            
            HomeScreen newScreen = new HomeScreen();
            newScreen.setVisible(true);
            this.setVisible(false);
            
            
            
        }
        else{
            JOptionPane.showMessageDialog(null, "The username and password has not been found");
        }


    }                                       

    private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // Create an object of the next GUI frame, make it visible and hide this
        MainMenuScreen newScreen = new MainMenuScreen();
        newScreen.setVisible(true);
        this.setVisible(false);
    }                                       

    private void lblHideMouseClicked(java.awt.event.MouseEvent evt) {                                     
        
        //txfPassword.setEchoChar((char)0);
        lblHide.setVisible(false);
        lblHide.setEnabled(false);
        lblShow.setVisible(true);
        lblShow.setEnabled(true);
        
    }                                    

    private void lblShowMouseClicked(java.awt.event.MouseEvent evt) {                                     
        
        //logtxfPassword.setEchoChar((char)8226);
        lblHide.setVisible(true);
        lblHide.setEnabled(true);
        lblShow.setVisible(false);
        lblShow.setEnabled(false);
        
    }                                    

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(LogInScreen.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(LogInScreen.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(LogInScreen.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(LogInScreen.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LogInScreen().setVisible(true);
            }
        });
    }

                        
    private javax.swing.JButton btnBack;
    private javax.swing.JButton btnNext;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JLabel lblFirstname;
    private javax.swing.JLabel lblHeading;
    private javax.swing.JLabel lblHide;
    private javax.swing.JLabel lblPasswordUnderline;
    private javax.swing.JLabel lblProfileIcon;
    private javax.swing.JLabel lblShow;
    private javax.swing.JLabel lblSurname;
    private javax.swing.JLabel lblUsernameUnderline;
    private javax.swing.JTextField txfPassword;
    private javax.swing.JTextField txfUsername;
    // End of variables declaration                   
}

Upvotes: 0

Views: 515

Answers (1)

Panashe Dumbu
Panashe Dumbu

Reputation: 11

Use JPasswordField rather than JTextField which has that method.


jPassword = new javax.swing.JPasswordField();

private void lblHideMouseClicked(java.awt.event.MouseEvent evt) {                                     

        jPassword.setEchoChar((char) 0);
        lblHide.setVisible(false);
        lblHide.setEnabled(false);
        lblShow.setVisible(true);
        lblShow.setEnabled(true);

    }

So now a password field is instantiated instead of a text field.

Upvotes: 0

Related Questions