JavaHow to Use Password Fields in Java

How to Use Password Fields in Java

Developer.com content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

A password field is a text component used to input a password. This Java Swing component allows a user to input their password while shielding it with black dots whenever the user types a character.

Java provides the JPasswordField class in its API that developers can use to create a password field. JPasswordField inherits from the JTextComponent class, which itself is a subclass of JComponent.

JTextComponent is the base class for all Swing text components. It provides customizable features such as a model, a view, and unlimited redo and undo to its subclasses.

In this programming tutorial, developers will learn how to create a password field in Java and get a user’s input and password.

Looking to learn Java in a classroom or online course setting? We have a tutorial listing some of the Best Online Courses to Learn Java to help get you started.

How to Use JPasswordField in Java

To create a password field, Java programmers need to instantiate the JPasswordField class, like so:

JPasswordField passwordField = new JPasswordField();

In JPasswordField’s constructor, you can pass an int argument to define the size of the field (columns) that you would like to be shown on the screen. In the event you are using a layout manager, such as BoxLayout, with your button, the value in the constructor will be ignored or overridden.

Here is some example Java code showing this in action:

import javax.swing.*;
import java.awt.*;
 
class SimplePassword{
 
   public static void main(String args[]){
 
       JFrame frame = new JFrame();
       JPasswordField passwordField = new JPasswordField();
       JLabel label = new JLabel("Password field is below"); // line 10
 
       frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
       passwordField.setBorder(BorderFactory.createLineBorder(Color.red));
       passwordField.setMinimumSize(new Dimension(75, 25));
       passwordField.setPreferredSize(new Dimension(150, 25));
       passwordField.setMaximumSize(new Dimension(250, 25));
      
       frame.add(label); // line 18
       frame.add(passwordField);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setSize(400,400);
       frame.setLocationRelativeTo(null);
       frame.setVisible(true);
    }
}

The code above creates a password field with a red border line:

Java Password Field Example

Take note of lines 10 to 18 of the code above; your code would still be able to run without these lines. However, you would not really be able to see the password field on your program window. The only thing that would help you identify it would be the blinking cursor on your screen.

Therefore, to help a user easily identify where the password field is, you need to set a colored border for it. Otherwise, it will blend in with the window’s background, making it unseeable. The setborder() method helps achieve this.

Additionally, you need to set the minimum, preferred, and maximum size of your password field using setMinimumSize(), setPreferredSize(), setMaximumSize(), respectively. If programmers do not set these values, they will have sizing issues with their password field. You can try commenting out these methods in the code above to see how your passfield resizes.

If it is the only component on the frame, you may not even be able to identify where it is if these sizes are not set.

Read: Best Tools for Remote Developers

Handling Events on Password Fields in Java

From the previous example, if you tried entering a password and then pressing the Enter key, you will notice that nothing happens. This is because no action has been configured for when a user has finished entering their password.

In a practical scenario, your user should be able send their password to a database or file for storage or verification. You can add a button to listen for events and associate them with a password field to handle this procedure.

To achieve this, you need to ensure that your event handling class implements the ActionListener interface. Next, you need to register an instance of this class to the button using addActionListener().

Finally, you need to provide the code that will handle the input password in the actionPerformed(ActionEvent e) method. This method is always called whenever an event is fired up from an associated component (e.g a button).

The Java code example below demonstrates the above concepts. It displays the input password on the terminal whenever a user presses the Submit button:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.BorderFactory;
 
class PasswordField implements ActionListener {
 
   private JPasswordField passwordField = new JPasswordField();
 
   PasswordField (){
 
       JFrame frame = new JFrame();              
       JLabel label = new JLabel("Enter Password");
       JButton button = new JButton("Submit");
       button.addActionListener(this);
    
       frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
       passwordField.setBorder(BorderFactory.createLineBorder(Color.red));
       passwordField.setPreferredSize(new Dimension(150, 25));
       passwordField.setMaximumSize(new Dimension(250, 25));
 
       frame.add(label);
       frame.add(passwordField);
       frame.add(button);
 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setSize(400,400);
       frame.setLocationRelativeTo(null);
       frame.setVisible(true);
   }
 
   public void actionPerformed(ActionEvent e) {
 
       char[] pass1 = passwordField.getPassword();
       System.out.println(pass1);
   }
      
   public static void main(String args[]){
 
       PasswordField passwordObj = new PasswordField();
    }
}

This creates the graphical output:

Java Password Field Tutorial

Final Thoughts on Java Password Fields

Password fields are used to capture private information. This means that developers need to pay particular attention to the security of their class members. One way of doing this is to use the private visibility modifier to ensure that other classes do not unnecessarily access members of this class.

Read more Java programming and software development guides.

Featured Partners: Password Management Software

Dashlane

Visit website

Dashlane secures your data with a patented security architecture and AES256-bit encryption, the strongest method available. Employees can securely share encrypted passwords with individuals or groups- instead of sending them unsecurely over email or Slack. Try Dashlane Business for free

Learn more about Dashlane

ManageEngine ADSelfService Plus

Visit website

ADSelfService Plus is an identity security solution providing adaptive multi-factor authentication (MFA), single sign-on (SSO), password self-service, a password policy enhancer, remote work enablement, and workforce self-service. It helps keep identity-based threats out, fast-tracks application onboarding, boosts password security, reduces help desk tickets, and empowers remote workforces. ADSelfService Plus ensures that your employees enjoy secure and seamless access to enterprise resources.

Learn more about ManageEngine ADSelfService Plus

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Latest Posts

Related Stories