Solved

Neter password in jPassword field with number jButtons

Posted on 2011-03-02
6
949 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
Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

 
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

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Python Assistance 7 80
VB Script to add site to Java Exception List 4 76
JavaScript/Java - Changing an image background color 4 66
tomcat startup error 5 59
An old method to applying the Singleton pattern in your Java code is to check if a static instance, defined in the same class that needs to be instantiated once and only once, is null and then create a new instance; otherwise, the pre-existing insta…
INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

775 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