Faire une arborescence d'une arraylist triée
Résolu/Fermé
Killdragon
-
9 déc. 2012 à 12:37
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 9 déc. 2012 à 16:05
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 9 déc. 2012 à 16:05
A voir également:
- Faire une arborescence d'une arraylist triée
- Arborescence excel - Forum Excel
- Voir l'arborescence d'un site - Forum Webmastering
- Afficher arraylist java ✓ - Forum Java
- Imprimer arborescence dossier windows 10 - Forum Windows
- Lister arborescence google drive - Forum Google Chrome
2 réponses
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
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...