J'ai une fenêtre très simple pour changer le mot de passe de la collection de dialogues javafx - j'utilise un exemple de dialogue personnalisé pour le construire (http://code.makery.ch/blog/javafx-dialogs-official/). Les questions sont en caractères gras dans le code ci-dessous:JavaFX Comment vérifier 2 valeurs observables et exécuter du code si elles correspondent aux conditions, et comment obtenir une paire de valeurs de la fenêtre jfx personnalisée
Dialog<Pair<String, String>> dialog = new Dialog<>();
dialog.setTitle("Password change");
ButtonType ButtonTypeSavePassword = new ButtonType("Save",
ButtonBar.ButtonData.OK_DONE);
ButtonType ButtonTypeCancel = new ButtonType("Cancel",
ButtonBar.ButtonData.CANCEL_CLOSE);
//dialog.getDialogPane().getButtonTypes().addAll(loginButtonType,
ButtonType.CANCEL);
// Create the username and password labels and fields.
GridPane grid = new GridPane();
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(20, 150, 10, 10));
PasswordField pass1 = new PasswordField();
PasswordField pass2 = new PasswordField();
grid.add(new Label("Enter new password"), 0, 0);
grid.add(pass1, 1, 0);
grid.add(new Label("Re-enter new password "), 0, 1);
grid.add(pass2, 1, 1);
Node saveButton =
dialog.getDialogPane().lookupButton(ButtonTypeSavePassword);
saveButton.setDisable(true);
Platform.runLater(() -> pass1.requestFocus());
// ??? Comment vérifier deux valeurs observables à la fois (si pass1.length> 0 et pass2.length> 0) avec l'expression lambda et changer saveButton pour activer?
dialog.setResultConverter(dialogButton -> {
if (dialogButton == ButtonTypeSavePassword) {
return new Pair<>(pass1.getText(), pass2.getText());
}
return null;
});
Optional<Pair<String, String>> result = dialog.showAndWait();
result.ifPresent(usernamePassword ->
{
System.out.println("Username=" + usernamePassword.getKey() + ",
Password=" + usernamePassword.getValue());
});
// ??? Comment puis-je mettre les valeurs de la paire dans 2 chaînes définies en dehors de la fenêtre JFX de la boîte de dialogue personnalisée (pas pour sortir le système comme ci-dessus)?
James_D - merci beaucoup pour la solution de travail - il est très facile de comprendre maintenant:). Dois-je diviser mes questions en 2 messages pour le rendre facile à trouver pour un autre utilisateur à l'avenir? – Mic