SWT: InputDialog is used to enter a password

How can I use the SWT InputDialog object to enter a password, replacing normal characters with normal * ?

Or is it impossible?

+4
source share
2 answers

Just create your own Dialog :

 public static void main(String[] args) { PasswordDialog dialog = new PasswordDialog(new Shell()); dialog.open(); System.out.println(dialog.getPassword()); } public static class PasswordDialog extends Dialog { private Text passwordField; private String passwordString; public PasswordDialog(Shell parentShell) { super(parentShell); } @Override protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText("Please enter password"); } @Override protected Control createDialogArea(Composite parent) { Composite comp = (Composite) super.createDialogArea(parent); GridLayout layout = (GridLayout) comp.getLayout(); layout.numColumns = 2; Label passwordLabel = new Label(comp, SWT.RIGHT); passwordLabel.setText("Password: "); passwordField = new Text(comp, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD); GridData data = new GridData(SWT.FILL, SWT.CENTER, true, false); passwordField.setLayoutData(data); return comp; } @Override protected void okPressed() { passwordString = passwordField.getText(); super.okPressed(); } @Override protected void cancelPressed() { passwordField.setText(""); super.cancelPressed(); } public String getPassword() { return passwordString; } } 

The result is as follows:

enter image description here

+9
source

You can subclass InputDialog and override the style used for the text control.

 public class PasswordDialog extends InputDialog { public PasswordDialog(Shell parentShell, String dialogTitle, String dialogMessage, String initialValue, IInputValidator validator) { super(parentShell, dialogTitle, dialogMessage, initialValue, validator); } @Override protected int getInputTextStyle() { return super.getInputTextStyle() | SWT.PASSWORD; } } 
+5
source

Source: https://habr.com/ru/post/1442547/


All Articles