Navigateur de disque dans une jtable

Description

Voici une classe que je viens d'effectuer pour un projet personnel. Il s'agit d'une table pour naviguer sur votre disque dur, parce qu'un tree ne me convenait pas. Elle ressemble à un navigateur de fichiers classique : double clic sur un dossier pour rentrer dedans... et le dossier ".." désigne le dossier parent et permet de remonter dans la hiérarchie.
J'ai fourni une classe démo pour montrer comment l'intégrer dans une fenêtre. Toutefois, celle ci est prévue pour linux car le fichier racine indiqué est "/". Si vous voulez le tester avec Windows, il suffit de changer un détail dans la classe "Demo.java", mettre "C:\\toto" à la place de "/" par exemple.
On peut trier les éléments par nom, type ou taille. J'ai fait le choix de toujours afficher les dossiers en haut de la table. Le tri est un bête tri à bulles, car le quicksort donne un résultat trop aléatoire pour un tri par type quand plusieurs fichiers sont du même type. Toutefois, la vitesse de tri reste acceptable.
La méthode paint est redéfinie pour afficher des polices antialiasées.
Je pense que le code est assez bien commenté pour s'en sortir facilement.

Source / Exemple :


/* Je mets juste le code de la démo qui appelle la classe en question car le code de la table est beaucoup trop long pour être affiché ici */

import javax.swing.*;

class FenetrePrincipale extends JFrame
{
	public FenetrePrincipale()
	{
		setTitle("Démo");	// titre de la fenêtre
		setSize(650, 320);	// taille de la fenêtre
		setLocationRelativeTo(null);	// centrée sur l'écran
		setResizable(false);	// fenêtre non redimensionnable
		setDefaultCloseOperation(EXIT_ON_CLOSE);	// termine le processus quand on ferme la fenêtre
		
		AAJTableBrowse tablePC = new AAJTableBrowse("/");	// attention, à modifier pour windows (genre D:\\toto)
		JScrollPane scrollPanePC = new JScrollPane(tablePC);	// pour avoir une scroll bar
		scrollPanePC.setBounds(new java.awt.Rectangle(20, 20, 600, 260));
		getContentPane().setLayout(null);
		getContentPane().add(scrollPanePC);
	}
}

public class Demo
{
	public static void main(String[] args)
 	{
		FenetrePrincipale fenPrinc = new FenetrePrincipale();
		fenPrinc.setVisible(true);
	}
}

Conclusion :


Voilà!
Vous pouvez l'adapter à votre guise... ;)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.