Interfaces Graphiques en Java
TD 4

Modèle, vue et controleur.

Exercice 1 : Liste et modèle

Dans un premier temps, dans une fenêtre, nous cherchons à afficher la liste des arguments de la ligne de commande dans une JList. Pour cela, utiliser le constructeur JList(Object[])

Dans un second temps, on cherche à ajouter un checkbox permettant de trier l'intérieur de la JList par odre croissant ou décroissant (on utilisera pour cela les méthodes Arrays.sort() et Collections.reverseOrder()).
Créer pour cela une classe implémentant le modèle de liste (ListModel) en héritant de AbstractListModel, en redéfinissant les méthodes getElementAt() et getSize puis en rajoutant une méthode sort(boolean order).
Utiliser le constructeur JList(ListModel) pour créer une list ayant pour modèle la classe crée ci-dessus.
Enfin faire en sorte qu'un appel à la méthode sort() demande à la vue (la JList) de se redessiner.


Exercice 2: ComboBox et modèle

Remplacer dans l'exercice précédent la JList par un JComboBox. Le modèle à utiliser sera alors le ComboBoxModel.


Exercice 3: Navigateur d'un système de fichiers

On désire écrire un programme de visualisation de l'arborescence de fichiers d'un répertoire donné (par exemple, le home dir).

Pour cela, on choisit de définir la classe FileNode représentant les noeuds d'une arborescence correspondant à des répertoires ou à des fichiers. Cette classe devra donc implanter l'interface TreeNode, afin d'être utilisée dans un composant JTree.

De plus, il n'est pas souhaitable que l'ensemble de l'arborescence soit chargée au départ. On préfèrera, autant que possible, un chargement dynamique, à la demande, lors du déplacement dans la hierarchie et de l'ouverture des répertoires.

Par ailleurs, dans un champ de texte en bas de la fenêtre, on veut visualiser le chemin absolu (dans le système de fichier considéré) du fichier ou du répertoire sélectionné.

Par exemple, voici une exécution de java -Dhome.dir=/home/web/www/ Repertoire

Exemple de
navigateur simple

On pourra également faire afficher une fenêtre d'alerte lorsque la lecture d'un répertoire pose un problème (protection en lecture ou erreur quelconque d'entrée/sortie).

Parmi les améliorations souhaitables, on peut citer:


Rémi Forax 2001 Université de Marne la Vallée