Faire une arborescence d'une arraylist triée
Résolu/Fermé
Killdragon
-
9 déc. 2012 à 12:37
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 9 déc. 2012 à 16:05
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 9 déc. 2012 à 16:05
A voir également:
- Faire une arborescence d'une arraylist triée
- Comment faire une arborescence sur word - Guide
- Arborescence excel ✓ - Forum Excel
- Création d'une arborescence excel - Forum Excel
- Afficher arborescence dossier windows 10 - Guide
- Terminer l'arborescence du processus ✓ - Forum Windows
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
9 déc. 2012 à 16:05
9 déc. 2012 à 16:05
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...