Faire une arborescence d'une arraylist triée
Résolu
Killdragon
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
je dispose d'une arraylist qui répertorie donc tous les fichiers de type .pdf et qui les trie suivant une méthode au choix (soit par taille, soit par nom, soit par date) mais ce que je voudrais c'est faire deux choses :
1) Afficher une arborescence qui permette donc de visualiser cette arraylist, c'est a dire une arborescence ne visualisant que les fichiers .pdf triés par l'arraylist (donc les pdf triés par nom, date ou taille) puisque je ne vois pas comment relier les deux
2) Faire cette même arborescence version programme, donc l'afficher sur mon JFrame...
J'admet ne pas trop savoir comment faire le lien logique entre les deux ne sachant déjà de base, pas trop comment se débrouiller avec les arborescences, mais pour ce qui est de l'afficher directement sur le JFrame la je ne vois pas du tout.
Grosso modo je voudrais créer cette arborescence façon console, et façon interface, histoire de laisser le choix a l'utilisateur :)
Bref je ne sais pas si j'ai été assez clair, auquel cas je rajouterais les informations nécessaires, ainsi j'espère donc que vous pourrez m'aider car j'admet ne pas trop savoir comment faire...
PS : Je possède déjà les arraylist triées, une pour chaque tri différent soit au total 3 arraylist :)
Merci d'avance !
je dispose d'une arraylist qui répertorie donc tous les fichiers de type .pdf et qui les trie suivant une méthode au choix (soit par taille, soit par nom, soit par date) mais ce que je voudrais c'est faire deux choses :
1) Afficher une arborescence qui permette donc de visualiser cette arraylist, c'est a dire une arborescence ne visualisant que les fichiers .pdf triés par l'arraylist (donc les pdf triés par nom, date ou taille) puisque je ne vois pas comment relier les deux
2) Faire cette même arborescence version programme, donc l'afficher sur mon JFrame...
J'admet ne pas trop savoir comment faire le lien logique entre les deux ne sachant déjà de base, pas trop comment se débrouiller avec les arborescences, mais pour ce qui est de l'afficher directement sur le JFrame la je ne vois pas du tout.
Grosso modo je voudrais créer cette arborescence façon console, et façon interface, histoire de laisser le choix a l'utilisateur :)
Bref je ne sais pas si j'ai été assez clair, auquel cas je rajouterais les informations nécessaires, ainsi j'espère donc que vous pourrez m'aider car j'admet ne pas trop savoir comment faire...
PS : Je possède déjà les arraylist triées, une pour chaque tri différent soit au total 3 arraylist :)
Merci d'avance !
A voir également:
- Faire une arborescence d'une arraylist triée
- Comment faire une arborescence sur word - Guide
- Imprimer arborescence dossier ✓ - Forum Windows 10
- Faire une arborescence sur excel ✓ - Forum Excel
- Copier une arborescence de dossier sans les fichiers - Forum Windows
- Copier l'arborescence des fichiers windows - Forum Windows
2 réponses
Tout ce que tu essayes de faire, la JTable le fait déjà, tu devrais regarder de ce côté.
Explications en détails : How To Use Tables
Voici un exemple de code qui trie les fichiers d'un répertoire (C:\ par exemple)
Pour changer l'ordre il suffit de cliquer sur l'entête des colonnes.
Explications en détails : How To Use Tables
Voici un exemple de code qui trie les fichiers d'un répertoire (C:\ par exemple)
Pour changer l'ordre il suffit de cliquer sur l'entête des colonnes.
import java.awt.BorderLayout; import java.io.File; import java.util.Comparator; import java.util.Date; import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableRowSorter; public class Fenetre extends JFrame { private static final long serialVersionUID = 1L; public Fenetre(File path) { // Remplissage des données String[] column = {"Name", "Size", "Date"}; DefaultTableModel model = new DefaultTableModel(column,0); for (File f : path.listFiles()) if (f.isFile()) model.addRow(new Object[] {f.getName(), f.length(), new Date(f.lastModified())}); // Création des ordres de tri TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(model); sorter.setComparator(0, new Comparator<String>() { public int compare(String fileName1, String fileName2) { return fileName1.toLowerCase().compareTo(fileName2.toLowerCase()); } }); sorter.setComparator(1, new Comparator<Long>() { public int compare(Long fileSize1, Long fileSize2) { return fileSize1.compareTo(fileSize2); } }); sorter.setComparator(2, new Comparator<Date>() { public int compare(Date fileDate1, Date fileDate2) { return fileDate1.compareTo(fileDate2); } }); // Création de la table JTable table = new JTable(model); table.setEnabled(false); table.setRowSorter(sorter); // Affichage dans la fenêtre add(table.getTableHeader(), BorderLayout.PAGE_START); add(table, BorderLayout.CENTER); setExtendedState(MAXIMIZED_BOTH); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { new Fenetre(new File("C:/")); } }
J'ai oublié de préciser que pour le mode console, je sais déjà comment faire pour pouvoir appuyer sur le bouton et ouvrir l'arborescence, c'est juste faire apparaitre le tri de l'arraylist qu'il me manque :)
Pour simplifier la chose, voici le code que je propose,
public class Fenetre extends JFrame { private JPanel container = new JPanel(); // Tout ce qui est contenu a l'intérieur de la fênetre private JPanel pan = new JPanel(); // instanciation du Jpanel barre des boutons private JButton bouton2 = new JButton("Tritaille"); // Créé le bouton "Tritaille" private JButton bouton3 = new JButton("Tridate"); // Créé le bouton "Tridate" private JButton bouton4 = new JButton("Trinom"); // Créé le bouton "Trinom" public Fenetre() { this.setTitle("Accueil"); // Nomme la fenêtre "Acceuil" Dimension tailleEcran = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); // repère la taille de l'écran this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Permet d'effectuer les actions de réduction/fermeture de la fenêtre this.setSize((int) tailleEcran.getWidth(), (int) tailleEcran.getHeight()); // permet de créer la fenêtre a la taille de l'écran pan.add(bouton2); // Permet d'ajouter le bouton Tritaille a la fenêtre pan.add(bouton3); // Permet d'ajouter le bouton Tridate a la fenêtre pan.add(bouton4); // Permet d'ajouter le bouton Trinom a la fenêtre bouton1.addActionListener(new OpenListener1()); // Pour que le bouton effectue l'action quand on clique dessus bouton2.addActionListener(new OpenListener2()); // Pour que le bouton effectue l'action quand on clique dessus bouton3.addActionListener(new OpenListener3()); // Pour que le bouton effectue l'action quand on clique dessus bouton4.addActionListener(new OpenListener4()); // Pour que le bouton effectue l'action quand on clique dessus container.setBackground(Color.ORANGE); // Définition de sa couleur de fond pan.setBackground(Color.RED); // Définition de la couleur de la barre des boutons container.setLayout(new BorderLayout()); // Permet de dire a ma fenêtre que les composants doivent se placer comme ça container.add(pan, BorderLayout.SOUTH); // Définit l'endroit ou son créés les boutons this.setContentPane(container); this.setVisible(true); } } /* * J'avais pensé créer des OpenListener pour permettre de faire les arborescences pour chaque tri : * Sauf que ça demande de rajouter des classes, donc une par OpenListener que j'aurais fait de cette façon : * */ /* class OpenListener implements ActionListener{ public void actionPerformed(ActionEvent arg0) { POUR l'arraylist triée comme on le désire FAIRE : //justement je ne sais pas comment faire comprendre au programme qu'il faut qu'il affiche ce que l'arraylist propose. JFileChooser SelectFile = new JFileChooser();// Instanciation du choix, on choisit le fichier qu'on veut if (SelectFile.showOpenDialog(SelectFile) != JFileChooser.APPROVE_OPTION) // si on clique sur annuler container.updateUI(); // On fait une mise a jour else // sinon ouvrirFichier(SelectFile.getSelectedFile().getAbsolutePath()); // On fait ce qui est dit dans la fonction ouvrirFichier } } } */ Avec la fonction ouvrirFichier ou l'on demandera a l'utilisateur de choisir quel programme ouvrira le fichier pdf, mais ça n'a pas de rapport avec ma question...