Solved

Neter password in jPassword field with number jButtons

Posted on 2011-03-02
6
970 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

 
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

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

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

Suggested Solutions

By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
This video teaches viewers about errors in exception handling.
Suggested Courses

739 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