How to hide characters using showInputDialog of JOption pane. For eg:JOptionPane.showInputDialog("Enter Your name:").
I want to hide characters when user is giving his name. I was in the middle of the application. If I can hide those characters, my job gets done. I do not want to use JPasswordField as it requires a form to hold that label(JPasswordField).
public static String getName() {
JPasswordField jpf = new JPasswordField(24);
JLabel jl = new JLabel("Enter Your Name: ");
Box box = Box.createHorizontalBox();
box.add(jl);
box.add(jpf);
int x = JOptionPane.showConfirmDialog(null, box, "Name Entry", JOptionPane.OK_CANCEL_OPTION);
if (x == JOptionPane.OK_OPTION) {
return jpf.getText();
}
return null;
}
Here's a solution which uses JOptionPane
to display a JPasswordField
which prints blank spaces as the user types.
Really all you would want to place into your code is the showPasswordPrompt()
method, but the code includes a main()
method which allows you to easily test what the dialog looks like.
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
public class JOptionPaneTest
{
public static String showPasswordPrompt( Component parent, String title )
{
// create a new JPasswordField
JPasswordField passwordField = new JPasswordField( );
// display nothing as the user types
passwordField.setEchoChar( ' ' );
// set the width of the field to allow space for 20 characters
passwordField.setColumns( 20 );
int returnVal = JOptionPane.showConfirmDialog( parent, passwordField, title, JOptionPane.OK_CANCEL_OPTION );
if ( returnVal == JOptionPane.OK_OPTION )
{
// there's a reason getPassword() returns a char[], but we ignore this for now...
// see: http://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string-for-passwords
return new String( passwordField.getPassword( ) );
}
else
{
return null;
}
}
public static void main( String[] args )
{
final JFrame frame = new JFrame( );
final JButton button = new JButton( "Push Me For Dialog Box" );
button.addActionListener( new ActionListener( )
{
@Override
public void actionPerformed( ActionEvent e )
{
String password = showPasswordPrompt( frame, "Enter Password:" );
button.setText( password );
}
} );
frame.add( button );
frame.setSize( 400, 400 );
frame.setVisible( true );
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With