How do I Prompt the user to enter a password before entering the main program?

10,817

Solution 1

You can simply add a static block to your program where you will do your authentication, this static block is always executed before the main method. If the user is not valid go with

System.exit(0);

to exit the program. Else the program will start execution as usual.

Here is one sample program to give you some idea :

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

public class Validation extends JFrame
{
    private static Validation valid = new Validation();
    static
    {
        String choice = JOptionPane.showInputDialog(valid, "Enter Password", "Password", JOptionPane.PLAIN_MESSAGE);
        if ((choice == null) || ((choice != null) && !(choice.equals("password"))))
            System.exit(0);
    }

    private static void createAndDisplayGUI()
    {
        valid.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        valid.setLocationRelativeTo(null);

        valid.getContentPane().setBackground(Color.YELLOW);

        valid.setSize(200, 200);
        valid.setVisible(true);
    }
    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndDisplayGUI();
            }
        });
    }
}

Solution 2

You can use showInputDialog to get the user name

and the below code to get the password

JLabel label = new JLabel("Please enter your password:");
JPasswordField jpf = new JPasswordField();
JOptionPane.showConfirmDialog(null,
  new Object[]{label, jpf}, "Password:",
  JOptionPane.OK_CANCEL_OPTION);

and write a if condition to check the user name and password

if (!isValidLogin()){
//You can give some message here for the user
System.exit(0);
}

// If login is validated, then the user program will proceed further

Solution 3

      String userName = userNameTF.getText();
      String userPassword = userPasswordPF.getText();
        if(userName.equals("xian") && userPassword.equals("1234"))
        {
          JOptionPane.showMessageDialog(null,"Login successful!","Message",JOptionPane.INFORMATION_MESSAGE); 
          // place your main class here... example: new L7();
        }
        else 
        {
           JOptionPane.showMessageDialog(null,"Invalid username and password","Message",JOptionPane.ERROR_MESSAGE); 
           userNameTF.setText("");
           userPasswordPF.setText("");                       
        }  
Share:
10,817
user976123
Author by

user976123

Updated on June 14, 2022

Comments

  • user976123
    user976123 almost 2 years

    What I need to do is to prompt the user with a username and password (authentication is done locally) and if it checks out, the user would then be able to access the main program body.

    public static void main(String[] args){
    
      //String input = JOptionPane.showInputDialog("Enter password to continue: ");
      //input2 = Integer.parseInt(input);
    
    
      // followed by the creation of the main frame
      new Cashier3();
      Cashier3 frame = new Cashier3();
      frame.setTitle("CASHIER 2");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
    

    is there any quick way to go about doing this?

  • user976123
    user976123 over 12 years
    That made alot of sense. I haven't really touched on static blocks, never really saw the need until now. Thanks, this made it much clearer.
  • nIcE cOw
    nIcE cOw over 12 years
    @user976123 : Your Welcome, Glad I could be of help. Regards
  • oers
    oers over 12 years
    please see the formatting help on how to format code blocks :) Or just use the {} Button the next time.