IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

File vers un affichage sur JTree


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut File vers un affichage sur JTree
    Bonjour tout le monde.

    Comme je bloque sur un sujet graphique, je viens posé mes questions ici.

    J'ai construit une classe qui est censé (elle ne sait pas faire encore) affiché le contenu d'un répertoire (récursif) et hélas les exemples données sont pas vraiment juste et en adéquation avec mon code. J'ai donc énormément de mal à faire en sorte que ma classe affiche correctement dans un JTree le contenu d'un répertoire au delà du premier niveau sur retours de sélection.

    Mettons que j'ai une arborescence ressemblant à ceci
    Parent : Test
    Enfant : Parent : Essais
    Enfant : Enfant : Parent : Récursivité
    Enfant : Enfant : Enfant : Fichier : Texte des essais.txt
    Enfant : Parent : Fonctions
    Enfant : Enfant : Fichier : Map.properties
    Enfant : Enfant : Fichier : image1.png
    Enfant : Enfant : Fichier : Infos.txt
    Maintenant voila ce que mon code me retourne uniquement
    Parent : Test
    Enfant : Parent : Essais
    Enfant : Parent : Fonctions
    Comme on aperçois, bien que ça soit des parents, ils apparaissent comme des enfants (premier problème à réglé). Ensuite comme on peut se l'imaginé, il manque les enfants du second niveau et on ne sait pas s'il y a un troisième niveau. Moralité on ne voie rien et ma classe fonctionne pas tout à fait comme prévus.

    Un jTree est fait, en théorie, pour afficher ce genre de cas, et bien ça ne le fait pas !

    J'imagine que déjà vous avez envie de voir ce que j'ai codé et bien que je n'arrive pas à mes fins, je vais vous le mettre ici. Je strap la partie main pour le moment car ce n'est pas ici que se trouve l'ennui mais bel est bien dans ma classe qui gère le JTree.
    La voici donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
    package appliClasses;
     
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.JScrollPane;
     
    import java.io.File;
    import java.io.IOException;
     
    /**
     * Cette classe a été prévue pour gérer les objets jTree().
     * @author Geeks
     * @version 1.0.0
     */
    public class MyTree {
     
        /**
         * Les champs de la classe
         */
        private JTree myTree = new JTree();
        private DefaultMutableTreeNode parentNode;
        private DefaultTreeModel dTreeModel = null;
     
        /**
         * Méthode : créer un JScollPane()
         */
        public MyTree(JScrollPane parentScrollPane) {
     
            //Affiche un JTree()
            myTree.setShowsRootHandles(true);
     
            //Affiche dans le JScrollPane() le JScrollPane
            parentScrollPane.setViewportView(myTree);
        }
     
        /**
         * Ajout d'un noeud racine
         * @param rootname
         * @return
         */
        private void addRootNode(String rootName) {
     
            //Crée un noeud parent
            parentNode = new DefaultMutableTreeNode(rootName);
     
            //Crée un modèle contenant le noeud parent
            dTreeModel = new DefaultTreeModel(parentNode);
     
            //Crée le noeud
            myTree.setModel(dTreeModel);
        }
     
        /**
         * Ajouter un noeud
         * @param nameNode
         * @param parentNode
         * @return
         */
        private DefaultMutableTreeNode addNode(String nameNode, DefaultMutableTreeNode parentNode) {
     
            //Crée une instance de DefaultMutableTreeNode()
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(nameNode);
     
            //Si parentNode est null
            if(parentNode == null) {
     
                //Crée un noeud
                ((DefaultMutableTreeNode)dTreeModel.getRoot()).add(node);
            }
            else {
     
                //Sinon crée un noeud parent
                parentNode.add(node);
            }
     
            //Retourne le noeud
            return node;
        }
     
        /**
         * Afficher un noeud parent particulier
         * @param nameDonne
         */
        public void affNameTree(String nameDonne) {
     
            //Si nameDonne n'est pas null
            if(nameDonne != null) {
     
                //Ajoute un noeud parent
                addRootNode(nameDonne);
            }
            else {
     
                //Ajoute un noeud nommé erreur
                addRootNode("Erreur");
            }
        }
     
        /**
         * Afficher le contenu d'un répertoire dans un JTree
         * @param fileSelected
         */
        public void affFileTree(File fileSelected) {
     
            //Si fileSelected n'est pas null
            if(fileSelected != null) {
                try {
     
                    //Ajoute un noeud parent
                    addRootNode(fileSelected.getCanonicalPath());
     
                    //Tant qu'il reste des fichier ou dossier à afficher
                    for(int i = 0; i < fileSelected.listFiles().length; i++) {
     
                        //Ajoute un noeud
                        addNode(fileSelected.listFiles()[i].getName(), null);
                    }
                }
                catch (IOException e) {
     
                    //En cas d'erreur, affiche le message.
                    System.out.println(e.getMessage());
                }
            }
            else {
                //Sinon affiche comme parent
                addRootNode("Rpg");
            }
     
            myTree.expandRow(0);
        }
    }
    Pour utiliser mon affichage, je passe par cette appel ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
            /*
             * Bouton du menu Fichier -> Créer -> Dossier Rpg
             */
     
     
            //Crée une instance MyTree()
            MyTree monArbre = new MyTree(this.jScrollPane1);
     
            //Créer une instance MyFileChooset()
            MyFileChooser monChoix = new MyFileChooser();
     
            //Crée un arbre à partir de la selection retourné
            monArbre.affFileTree(monChoix.getActionJFileChooser());
        }
    Là encore pas de quoi fouetté un chat. Et pourtant ça bloque depuis 3 jours sur ça

    Existe-il une possibilité de faire une nouvelle fonction qui affiche au delà d'un niveau. Car je vais gardé le niveau à un seul niveau pour plus tard (je risque d'en avoir besoin).

    Merci pour vos précisions et votre aide.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bon petit exemple vite fait codé, rien de bien complexe, pas de lazy loading ou quoi que ce soir (juste un chargement des répertoires via un SwingWorker histoire de ne pas bloquer l'EDT si il y a beaucoup de répertoires, avec une progress bar qui apparait au top pendant le chargement).


    Donc une truc simple histoire que tu comprennes comment les choses marches car tu as l'air d'avoir foncé tête baissé sur les trucs complexes sans avoir pris le temps de voir les choses simples.

    Donc chargement des données de façon récursive en construisant une arborescence de DefaultMutableTreeNode via la méthode buildFileTree du SwingWorker. Affectation de cette arbo au Jtree via la méthode done du DirectoryWorker.

    Puis, bah c'est tout en fait, tout le reste c'est du code bien standard, un listener sur un bouton qui lance le DirectoryWorker, puis voilà.

    Ah, et puis un Renderer faisant en sorte de n'afficher que le nom du fichier et non pas son path.

    Image:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    package swing.tree;
     
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
     
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JProgressBar;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.SwingUtilities;
    import javax.swing.SwingWorker;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeCellRenderer;
    import javax.swing.tree.DefaultTreeModel;
     
    import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;
     
    public class MyFileTree {
        private JFrame frame;
        private JButton b;    
        private JTree tree;
        private JProgressBar progress;    
     
        public MyFileTree() {
            frame = new JFrame();
            progress = new JProgressBar();
            progress.setIndeterminate(true);
            frame.add(progress, BorderLayout.NORTH);
            progress.setVisible(false);
            tree = new JTree(new DefaultTreeModel(new DefaultMutableTreeNode("Vide")));
            tree.setCellRenderer(new FileTreeCellRenderer());
            b = new JButton("Changer Arbo");
            b.addActionListener(new ActionListener() {
     
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    JFileChooser chooser = new JFileChooser();
                    chooser.setMultiSelectionEnabled(false);
                    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
                    int flag = chooser.showDialog(frame, "Choisir répertoire");
                    if(flag == JFileChooser.APPROVE_OPTION) {
                        DirectoryWorker worker = new DirectoryWorker(chooser.getSelectedFile());
                        progress.setVisible(true);
                        frame.validate();
                        worker.execute();
     
     
                    }
                }
            });
            frame.setSize(640, 480);
            frame.add(new JScrollPane(tree), BorderLayout.CENTER);
            frame.add(b, BorderLayout.SOUTH);
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
     
        public JFrame getFrame() {
            return frame;
        }
     
     
     
     
        private class FileTreeCellRenderer extends DefaultTreeCellRenderer {
     
            /* (non-Javadoc)
             * @see javax.swing.tree.DefaultTreeCellRenderer#getTreeCellRendererComponent(javax.swing.JTree, java.lang.Object, boolean, boolean, boolean, int, boolean)
             */
            @Override
            public Component getTreeCellRendererComponent(JTree arg0, Object arg1, boolean arg2, boolean arg3, boolean arg4, int arg5, boolean arg6) {
                // TODO Module de remplacement de méthode auto-généré
                super.getTreeCellRendererComponent(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
                System.out.println(arg1.getClass());
                if(DefaultMutableTreeNode.class.equals(arg1.getClass())) {
                    DefaultMutableTreeNode node = (DefaultMutableTreeNode) arg1;
                    if(File.class.equals(node.getUserObject().getClass())) {
                        File f = (File) node.getUserObject();                
                        setText(f.getName());
                    }
                }    
                return this;
            }                
        }
     
        private class DirectoryWorker extends SwingWorker<DefaultMutableTreeNode, Void> {
     
            private DefaultMutableTreeNode root=null;
            private File f;
     
     
     
     
            public DirectoryWorker(File f) {
                super();
                this.f = f;            
            }
     
            @Override
            protected DefaultMutableTreeNode doInBackground() throws Exception {
                root = buildFileTree(f);
                return null;
            }
     
            @Override
            protected void done() {
                tree.setModel(new DefaultTreeModel(root));
                progress.setVisible(false);
                frame.validate();
                super.done();
     
            }
     
            private DefaultMutableTreeNode buildFileTree(File f) {
                System.out.println(f.getAbsolutePath());
                DefaultMutableTreeNode node = new DefaultMutableTreeNode(f);
                if(f.isDirectory()) {
                    File[] children = f.listFiles();
                    for (File child : children) {
                        node.add(buildFileTree(child));
                    }
                }
                return node;
            }
     
        }
     
     
        public static void main(String[] args) {
            Runnable r = new Runnable() {
                public void run() {
                    try {
                        UIManager.setLookAndFeel(new NimbusLookAndFeel());
                        new MyFileTree().getFrame().setVisible(true);
                    } catch (UnsupportedLookAndFeelException e) {
                        // TODO Bloc catch auto-généré
                        e.printStackTrace();
                    }
                }
            };
            SwingUtilities.invokeLater(r);
        }
    }
    Ca marche sans soucis pour ton exemple, et c'est vraiment simple, tu as cherché trop vite la complexité et te lancer dans du code que tu ne comprenais pas forcément. Donc retourne voir les tutos de base du JTree (celui de sun -enfin oracle maintenant- contient tout le nécessaire pour débuter avec les JTree)
    Si tu as des questions...
    ++

  3. #3
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Bonsoir Sinok,

    Ravi de voir une réponse plosible. Toutefois, j'ai essayer de l'adapter pour mon cas et il c'est avéré que je n'ai pas pu !

    Le manque de commentaire par exemple n'aide pas énormément à la lecture de ton code. C'est bien dommage car c'est ainsi que j'aurais peut-être compris qui faisait quoi.

    Comme il n'y a pas de commentaire, je n'ai pas compris ce qui était fait, résultat je suis au même point.

    Oh oui je suis chiant la dessus, mais sérieusement croyez-vous que dans l'avenir, le jour ou il vous faudra faire un portage ou une modification il vous faudra tout relire pour changer une ou deux variables... Enfin bref, je passe à la suite.

    La suite est très simple, j'ai tester la récursivité avec une méthode, si je puis dire basé sur des System.out.println(). Elle fonctionne parfaitement toutefois quand je fais son application, je me heure à un énorme souci. On ne voie plus que le dernier niveau malgré les bonnes données. On est donc dans la case du départ.

    J'ai été voir ce que mettais Oracle sur le JTree, j'ai même commencé par là, sans succès, lisant très mal l'Anglais. Et bien oui français et content de comprendre déjà ma langue oh combien complexe, alors m'occuper de celle des autres c'est très peux pour moi!

    Maintenant il me reste quoi ? Me contenté de ne pas comprendre et ne pas savoir, solution de facilité. Cherché inlassablement jusqu'au Banzail (invraisemblable) ! Demander de l'aide est une solution qui porte, parfois, j'ai bien l'impression, plus d'incompréhension qu'autre chose.

    Voici donc ma question, celle qui va en faire frémir certains. Peut-on à partir du code que j'ai déjà fait (ma classe) voir l'arborescence complète ou non ?

    Si c'est oui, par quel astuce. Et si c'est non, je passe à un autre sujet.

    Un dernier point. Je me lance rarement pus vite que la musique, mais il se trouve que le peu d'exemple cohérent (5 personnes que je lis, 5 méthodes différentes) me font pensé que tout le monde fait un peu comme il veut. C'est pas pour être méchant mais quand je vois débarqué une progresse bar (alors que je n'en ai pas besoin, ni demander) je m'interroge ! Fin de la parenthèse.

    Sur ce bonne soirée, et peut-être à demain, si l'envie me reprends de faire une application. C'est pas gagner et il faudra me convaincre !

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Sinok, l'ennui c'est, qu'en general, on ne peut pas se permettre de tout charger dans le meme JTree des qu'on commence a vouloir parcourir un emplacement arbitraire ou carrement tous les roots (y compris les shares montees sous Windows) soit on arrive a un OutOfMemoryError soit ca prend des plombes meme avec un SwingWorker (cf: shares et repertoires reseau) ou alors qui boucle (liens hard ou symboliques sous Unix). Il vaut donc mieux se trouver vers le lazy loading.

    Sous Linux et Unix il ne faut pas en general trop se casser la tete (sauf si tu veux faire un traitement particulier pour les liens symboliques). Par contre, il y a des tests supplementaires a faire pour gerer les fichiers speciaux sous Windows qui fonctionnent comme des repertoires et n'ont pas vraiment de chemin sur le disque (le bureau, qui est certes un repertorie, mais qui se trouve etre la racine de l'arborescence sous Windows y compris du disque qui l'heberge -genial-, mes documents ou encore mes repertoires reseaux, ...). Pire encore l'arborescence n'est pas la meme sous differentes versions de Windows (2000, XP, Vista, 7).

    Microbulle, evite de deballer 10 paragraphe sur ta vie, l'anglais, le temps qu'il fait, ton envie a programmer etc. Indique juste que tu as besoin de details et explications supplementaires pour comprendre ce qui se passe (en meme temps Sinok t'as donne un squelette de son algo / sa maniere de proceder donc fait un peu d'effort aussi pour essayer de comprendre comment ca marche avec le deboggeur).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Et bien je suis ravi de deux choses. La première et la confirmation qu'un jTree bien qu'adapté à ce que je voulais aire serais de toute façon trop limité.

    Deux cas se poses. Soi je fait tout sur un niveau mais à ce moment là, le fait de cliqué sur un répertoire permet de charger la suite et non dès le départ comme le code que j'avais donné voulais le faire croire. Soi je fais en sorte d'oublier le jTree qui n'est au final peut-être pas nécessaire dans mon application.

    Donc je vais procédé comme suit. Je vais modifier ma classe m'approchant de l'idéale afin de comprendre son fonctionnement mais je ne vais pas l'exploité dans mon application en changeant radicalement de procédé.

    Sur ce, je reviendrais peu-être dans ces lignes avec des questions plus précises. A part ça, désolé de m'être un peu emporté mais quand on passe trois jours avec trop de codes différents, on ne sait plus qui fais quoi. Alors un gros bloc, on ne digère plus !

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Perso un JTree est tout à fait adapté pour afficher une arborescence principalement grace au lazy loading mais donc sous Windows on a qq problèmes pour l'affichage initial de l'arbre :

    Ex là sous 7 l'arborescence de mon disque est

    Bureau
    ->Ordinateur
    -->C:
    -->D:
    ...
    ->Réseau
    ->Bibliothèques
    ->Groupe résidentiel
    ->Fabrice (c:\users\fabrice)
    ->divers reps sur le bureau

    Donc bonjour le micmac quand tu veux ouvrir un répertoire genre c:\truc\chouette\chose\ sachant que plusieurs de ces "dossiers" ne correspondent pas en fait à des vrais répertoires et qu'il te faut déplier deux noeud au pif pour rien qu'arriver à trouver c:. Et ça c'est juste la version Française et sur une version de Windows bien particulière (évidement sous Vista et XP les noms FR ou même EN ne sont pas les mêmes et les chemins rééls, pour ceux qui en ont encore moins). Bonjour pour savoir comment se nomme My Computer / Computer / Mon ordinateur / Ordinateur dans toutes les langues.

    Donc dans certains cas ça peut être aussi sympa d'utiliser une liste pour représenter une arborescence avec le ".." qui va bien en haute de liste pour remonter au répertoire parent et avec un champs texte ou une combo pour permettre à l'utilisateur de taper le bon chemin.

    Nom : list.jpg
Affichages : 671
Taille : 51,4 Ko Nom : tree.png
Affichages : 570
Taille : 57,9 Ko

    Voici deux prototype que j'ai fait en JavaFX dernièrement après en avoir fait plusieurs en Swing au cours des années passées et je pense qu'au final la liste est bien moins prise de tête pour l'affichage que l'arbre même si de base je préfère l'affichage arborescent (c'est la faute à Microsoft). A noter que dans cette liste je n'affiche pas ".." en haut mais j'ai un bouton à la fonctionalité équivalente en haut près du champs texte.

    Garde à l'idée d'explorer le contenu des répertoire via un SwingWorker ça peut être fortement utile lorsqu'on explore une share lente, un lecteur pas rapide ou le contenu de Réseau par exemple (qui est très très lent à s'afficher dans mon cas ; il me faut refaire une passe d'optimisation via SwingWorker).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/06/2011, 11h49
  2. [FILE]autre que affichage du bureau sur click du bouton parcourir
    Par Mat_DZ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/06/2007, 14h15
  3. [Swing]Problème d'affichage sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 19/01/2006, 10h41
  4. Upgrade kernel 2.4 vers 2.6 sur MDK9.2
    Par Sph@x dans le forum Administration système
    Réponses: 14
    Dernier message: 02/02/2004, 18h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo