Password Dialog Box Program

Typing on a keyboard
Kay/E+/Getty Images

Here is example Java code showing how to make a password dialog box. This program uses a combination of the JOptionPane class and the JPasswordField class.

When this program is run a JOptionPane is shown containing a JPasswordField, a JTextField, an OK and Cancel button. The JFrame behind the JOptionPane uses a text area to provide feedback about the input the user has made and what buttons have been pressed.

The article relating to this code is How to Make a Password Dialog Box. Also, have a look at JPasswordField Overview if you want more specific information about the JPasswordField class.

Note:For this Java program to work it needs to be saved in a file called

//Imports are listed in full to show what's being used
//could just import javax.swing.* and java.awt.* etc..
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JPasswordField;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.util.Arrays;
import java.awt.EventQueue;

public class PasswordDialog {
    //Note: Typically the main method will be in a
    //separate class. As this is a simple one class
    //example it's all in the one class.
    public static void main(String[] args) {
         //Use the event dispatch thread for Swing components
         EventQueue.invokeLater(new Runnable()
             public void run()
    //handles the creation of the JFrame and
    //all it's components
    private static void createGuiFrame()
        JFrame guiFrame = new JFrame();
        //make sure the program exits when the frame closes
        guiFrame.setTitle("Dialog Box Example");
        //This will center the JFrame in the middle of the screen
        //Using a JTextArea to diplay feedback
        //(i.e., the username and password entered
        JTextArea tracker = new JTextArea("Password Tracker:");
        //Using a JPanel as the message for the JOptionPane
        JPanel userPanel = new JPanel();
        userPanel.setLayout(new GridLayout(2,2));
        JLabel usernameLbl = new JLabel("Username:");
        JLabel passwordLbl = new JLabel("Password:");
        JTextField username = new JTextField();
        JPasswordField passwordFld = new JPasswordField();
        //As the JOptionPane accepts an object as the message
        //it allows us to use any component we like - in this case 
        //a JPanel containing the dialog components we want
        int input = JOptionPane.showConfirmDialog(guiFrame, userPanel, "Enter your password:"
                            ,JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
        char[] correctPassword = {'a', 'P', 'a', 'S', 's', 'W', 'o', 'R', 'd'};
        if (input == 0) //OK Button = 0
            tracker.append("\nUsername entered was: " + username.getText());
            //Retrieve password
            char[] enteredPassword = passwordFld.getPassword();
            tracker.append("\nPassword entered was: " + String.valueOf(enteredPassword));
            if (Arrays.equals(correctPassword, enteredPassword))
                tracker.append("\nThe password entered is correct!");
                tracker.append("\nCall security - it's an imposter!");
            //Note: best practice is to zero out the array
            //that contains the password. (Bit silly here
            //as I'm printing the password to show how it's retrived
            //but keep it in mind when using JPasswordFields.)
            Arrays.fill(enteredPassword, '0');
            //either the cancel button or the 'x' 
            //has been pressed
            tracker.append("\nDialog cancelled..");