Bonjour,
Je développe un logiciel qui utilise les boîtes de dialogue désormais disponibles dans Java (Alert).
Dans le contenu de cette boîte de dialogue, je charge une liste d'éléments dans une 'ListView'. Dans certain cas, l’utilisateur doit être amené à sélectionner plusieurs éléments dans cette liste.
Je ne parviens pas à faire en sorte que le bouton d’exécution soit rendu inactif tant que l'utilisateur n'a pas sélectionné le bon nombre d'éléments. En effet, les boutons de type 'ButtonType' qui sont utilisés dans ma boîte de dialogue n'ont pas de méthode .setDisable() ou de méthode équivalente d'implémentée comme c'est la cas pour des boutons classiques.
Comme j'utilise d'autres boîtes de dialogues dans mon logiciel, j'aimerai passer par les boîtes de dialogue implémentées dans Java et ne pas avoir à en générer une nouvelle pour conserver une homogénéité dans le rendu graphique graphique de mon logiciel.
Voici la manière dont j'ai généré ma boîte de dialogue.
J'ai essayé de contourner le problème en affichant une nouvelle boîte de dialogue à l'écran pour informer l'utilisateur si le nombre d’éléments sélectionnés n'est pas le bon, mais lorsque cette nouvelle boîte se ferme, la première s'est fermée également...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Alert alert = new Alert(AlertType.CONFIRMATION); alert.setTitle("Warning Dialog"); alert.setHeaderText("Look, a Warning Dialog"); Label label = new Label(); label.setText("Select in the following list the "+ ('[nbre de valeures à sélectionner]') +" compounds to suppress !"+"\n"+"(For multiple selection, please stay the 'Ctrl' key pressed during the selection)."); ListView<String> produitsListView = new ListView<String>(); produitsListView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); produitsListView.setItems(reaction.getNomEspecesProduitsList()); ObservableList<String> selectedItems = FXCollections.observableArrayList(); produitsListView.setOnMouseClicked(new EventHandler<Event>() { @Override public void handle(Event event) { selectedItems.clear(); selectedItems.addAll(produitsListView.getSelectionModel().getSelectedItems()); } }); VBox vBox = new VBox(); vBox.setSpacing(20); vBox.setPadding(new Insets(20, 20, 20, 20)); vBox.getChildren().setAll(label, produitsListView); alert.getDialogPane().setContent(vBox); ButtonType deleteButtonType = new ButtonType("Delete", ButtonData.APPLY); ButtonType cancelButtonType = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE); alert.getButtonTypes().setAll(cancelButtonType, deleteButtonType); Optional<ButtonType> result = alert.showAndWait(); if (result.get() == deleteButtonType){ // On procéde à la suppression des éléments sélectionnés uniquement si l'utilisateur a sélectionné // le bon nombre de composés dans la liste. [...] }else{ // L'utilisateur a sélectionné "Cancel". On restore la valeur de départ. [...] }
Auriez vous une idée de la manière de coder cela pour faire en sorte d'être certain que l'utilisateur ai sélectionné le bon nombre d’éléments dans la liste avant de rendre le bouton d’exécution actif et poursuivre l’exécution du programme ?
Merci d'avance
Partager