13 25 Base interface 2
Nous voulons maintenant que le clic sur un élément de la liste mette à jour la TextArea centrale avec les détails et la date d'échéance, plutôt que de simplement écrire dans la console. Commençons par déclarer la TextArea dans le contrôleur en lui ajoutant un fx:id dans le FXML et la variable correspondante annotée @FXML.
Typer correctement la ListView
Au passage, je remarque une erreur quand je supprime le cast manuel sur l'élément sélectionné : la ListView retourne un Object. C'est parce que je ne l'ai pas typée. Je modifie donc sa déclaration :
@FXML
private ListView<TodoItem> todoListView;
De même côté FXML. Désormais, getSelectedItem() retourne directement un TodoItem, plus besoin de cast. Premier test : on remplace l'ancien System.out.println par detailsTextArea.setText(item.getDetails()). En cliquant sur un élément, le panneau central affiche bien les détails de la tâche.
Concaténer détails et deadline avec StringBuilder
Reste à afficher aussi la date d'échéance sous les détails. On utilise un StringBuilder pour concaténer proprement les deux blocs avec quatre sauts de ligne entre eux :
StringBuilder sb = new StringBuilder(item.getDetails());
sb.append("\n\n\n\n");
sb.append("Date limite : ");
sb.append(item.getDeadline().toString());
detailsTextArea.setText(sb.toString());
Au lancement, en cliquant sur un élément, on voit apparaître la description détaillée puis, après quelques sauts de ligne, la mention « Date limite : 2022-05-22 » (par exemple). Tout fonctionne, mais le rendu est encore brut. Dans la prochaine vidéo, nous allons améliorer ce rendu en sortant la date de la TextArea, en ajoutant un Label dédié et en organisant les éléments dans une VBox pour mieux positionner le tout. À bientôt.
En résumé
Cette leçon explique comment afficher les détails des objets sélectionnés dans une interface graphique Java. On apprend à utiliser une zone de texte (TextArea) pour présenter les informations telles que la description, les détails et la date limite. La leçon démontre l'importance du typage explicite des collections via les génériques et l'utilisation de StringBuilder pour formater le texte sur plusieurs lignes.
Points clés
- Ajouter une zone de texte (TextArea) pour afficher les détails des objets sélectionnés
- Utiliser le casting pour accéder correctement aux objets de la liste
- Spécifier les types génériques dans la déclaration de liste pour éviter les erreurs de conversion
- Utiliser StringBuilder pour construire une chaîne formatée contenant description, détails et date limite
- Afficher la représentation textuelle complète des objets avec toutes leurs propriétés
Questions fréquentes
Pourquoi faut-il spécifier les types génériques dans la déclaration de liste ?
Spécifier les types génériques permet de typer correctement les objets et d'éviter les erreurs de casting lors de l'accès aux éléments, garantissant la cohérence du code.
Quel est le rôle de StringBuilder dans cette leçon ?
StringBuilder permet de construire efficacement une chaîne multi-lignes contenant les détails, la description et la date limite avant de l'afficher dans la TextArea.
Qu'est-ce qui sera amélioré dans la leçon suivante ?
La prochaine leçon améliora la mise en forme visuelle en ajoutant du texte en gras pour les labels et en positionnant correctement les éléments de l'interface graphique.