Solved

Neter password in jPassword field with number jButtons

Posted on 2011-03-02
6
956 Views
Last Modified: 2012-05-11
Hi

Can anyone please give me a code example showing how I can enter a password in a jPasswrod field if I have numeric jButtons (0-9) from which the user will enter the PIN.

Can you please advise how and where I should place actionlisteners....

Thanks
0
Comment
Question by:BinaryFlusher
  • 3
  • 2
6 Comments
 
LVL 92

Expert Comment

by:objects
ID: 35023115
button = new JButton("a");
button.setActionCommand("1");
button.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent event) {
      passwordField.setText(passwordField.getText()+event.getActionCommand());
   }
});
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 35023134
To each button, add an instance the following, e.g

b.setAction(new PasswordFieldAction(digit));
private class PasswordNumberAction extends AbstractAction {
	public PasswordNumberAction(String digit) {
	    super(digit);
	}

	public void actionPerformed(ActionEvent e) {
	    passwordField.setText(passwordField.getText() + e.getActionCommand());
	}
    }

Open in new window

0
 
LVL 92

Accepted Solution

by:
objects earned 250 total points
ID: 35023201
sorry a small typo in the above. should of course be


button = new JButton("1");
button.setActionCommand("1");
button.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent event) {
      passwordField.setText(passwordField.getText()+event.getActionCommand());
   }
});

Do the same for the other buttons
or use a loop

for (int i=0; i<10; i++) {
   String d = Integer.toString(i);   // convert int to string
   JButton button = new JButton(d);
   button.setActionCommand(d);
   button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
         passwordField.setText(passwordField.getText()+event.getActionCommand());
      }
   });
   panel.add(button);
}
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
LVL 86

Expert Comment

by:CEHJ
ID: 35023269
This is the sort of thing you can do
import java.awt.*;
import java.awt.event.*;

import java.io.*;

import java.util.*;

import javax.swing.*;


public class F extends JFrame {
    JPasswordField passwordField;

    private void setGui() {
        try {
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            Container cp = getContentPane();
            passwordField = new JPasswordField();
            cp.add(passwordField, BorderLayout.NORTH);
            cp.add(getNumberPad(), BorderLayout.CENTER);
            cp.add(new JButton(new PasswordRevealer("Reveal")),
                BorderLayout.SOUTH);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public JPanel getNumberPad() {
        final int ROWS = 4;
        final int COLS = 3;

        JPanel p = new JPanel();
        p.setLayout(new GridLayout(ROWS, COLS));

        for (int i = 0; i < (ROWS * COLS); i++) {
            if (i < 10) {
                p.add(new JButton(new PasswordNumberAction("" + i)));
            } else {
                p.add(new JPanel());
            }
        }

        return p;
    }

    public static void main(String[] args) {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                    public void run() {
                        F f = new F();
                        f.setGui();
                        f.setSize(200, 200);
                        f.setVisible(true);
                    }
                });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private class PasswordRevealer extends AbstractAction {
        public PasswordRevealer(String caption) {
            super(caption);
        }

        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(F.this,
                new String(passwordField.getPassword()));
        }
    }

    private class PasswordNumberAction extends AbstractAction {
        public PasswordNumberAction(String digit) {
            super(digit);
        }

        public void actionPerformed(ActionEvent e) {
            passwordField.setText(passwordField.getText() +
                e.getActionCommand());
        }
    }
}

Open in new window

0
 

Author Comment

by:BinaryFlusher
ID: 35025575
hi objects

Your code below appears to use a string for the setActionCommand value, should this not be a char

When I reviewed the jPasswordField API it talks about the field being constructed from chars...?


button = new JButton("1");
button.setActionCommand("1");
button.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent event) {
      passwordField.setText(passwordField.getText()+event.getActionCommand());
   }
});
0
 
LVL 92

Assisted Solution

by:objects
objects earned 250 total points
ID: 35025607
> Your code below appears to use a string for the setActionCommand value, should this not be a char

no its a string

> When I reviewed the jPasswordField API it talks about the field being constructed from chars...?

yes it uses characters to retrieve the password, so change what I posted to

      passwordField.setText(new String(passwordField.getPassword())+event.getActionCommand());
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
jar file executable 12 58
How do I remove an object from a 3 40
jsp login check 12 43
Adding multiple JVM environments to RedHat 6 7 48
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question