import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
public JOptionPane pane;
public class PasswordBox
{
@SuppressWarnings("unused")
public String prompt()
{
pane = new JOptionPane();
JPasswordField pass = new JPasswordField(10)
{
public void addNotify()
{
pane.addNotify();
requestFocus();
}
};
int action = pane.showConfirmDialog(null, pass,"Enter Password",JOptionPane.OK_CANCEL_OPTION);
return new String(pass.getPassword());
}
}
или вот другой способ сделать это:
JPanel panel = new JPanel();
JPasswordField pass = new JPasswordField(10)
{
public void addNotify()
{
panel.addNotify();
requestFocus();
}
};
panel.add(pass);
JOptionPane pane = new JOptionPane();
JButton btnOK = new JButton("OK");
JButton btnCancel = new JButton("Cancel");
Object[] options = {btnOK, btnCancel};
pane.showOptionDialog(null, panel, "Enter the password", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, null);
Редактировать (by camickr, не стесняйтесь удалять, если это не правильно). Я считаю, что код должен быть:
JPasswordField pass = new JPasswordField(10)
{
public void addNotify()
{
super.addNotify();
requestFocusInWindow();
}
};