Modèle, vue et controleur.
Dans un premier temps, dans une fenêtre, nous cherchons à afficher la liste des arguments de la ligne de commande dans une JList.
public class Test extends JFrame { public Test(Object[] values) { JList list=new JList(value); JPanel panel=new JPanel(); panel.add(list); setContentPane(panel); } public static void main(String[] args) { JFrame frame=new Text(args); frame.setSize(300,200); frame.show(); } }Changer le code ci-dessus, pour utiliser un modèle de liste.
Dans un second temps, on cherche à ajouter un checkbox permettant de
trier l'intérieur de la JList par ordre croissant ou
décroissant. Ajouter une méthode sort(boolean order) au
modèle de liste créé précédemment (L'implémentation pourra utiliser
les méthodes Arrays.sort() et
Collections.reverseOrder()).
Ajouter un bouton à cocher (JCheckbox) qui va trier la liste
et demander à la vue (la JList) de se redessiner.
Remplacer dans l'exercice précédent la JList par un JComboBox. Le modèle à utiliser sera alors le ComboBoxModel.
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
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: