1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| public class ExemplePasswordBloquant {
public static void main(String[] args) {
System.out.println("Saisie du mot de passe");
char[] password = getPassword();
if ( password!=null ) {
System.out.println("Le programme continue...");
if ( checkPassword(password) ) {
System.out.println("...");
}
else {
System.out.println("Password incorrect...");
}
}
else {
System.out.println("Le programme s'arrête...");
}
}
private static boolean checkPassword(char[] password) {
return Arrays.equals(password, new char[]{'1','2','3','4'}); // à adapter évidemment
}
public static char[] getPassword() {
final JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
pane.setValue(okButton);
}
});
okButton.setEnabled(false);
final JButton cancelButton = new JButton("Annuler");
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
pane.setValue(cancelButton);
}
});
final JPasswordField passwordField = new JPasswordField();
passwordField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
okButton.doClick();
}
});
passwordField.getDocument().addDocumentListener(new DocumentListener() {
protected void update() {
okButton.setEnabled(passwordField.getDocument().getLength()> 0);
}
@Override
public void insertUpdate(DocumentEvent e) {
update();
}
@Override
public void removeUpdate(DocumentEvent e) {
update();
}
@Override
public void changedUpdate(DocumentEvent e) {
update();
}
});
if ( JOptionPane.showOptionDialog(
null,
passwordField,
"Entrez le mot de passe",
JOptionPane.YES_NO_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
new Object[]{okButton, cancelButton},
passwordField) == JOptionPane.OK_OPTION ) {
return passwordField.getPassword();
}
else {
return null;
}
}
private static JOptionPane getOptionPane(JComponent parent) {
while( !(parent instanceof JOptionPane) ) {
parent = (JComponent)parent.getParent();
}
return (JOptionPane) parent;
}
} |
Partager