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 :

Lenteur avec JList et JTabPane


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Par défaut Lenteur avec JList et JTabPane
    Bonjour,

    je suis en train de réaliser un client Twitter et depuis que j'ai mis en place une JList, j'ai des problème de lenteur.

    Je pense que copier coller le code ici serai idiot.
    Le principe que j'utilise est simple:
    je rempli un DefaultListModel par des éléments, puis je l'ajoute à une JList et une JScrollPane et finalement j'intègre le tout dans un JTabbedPane.

    Le problème est qu'a présent le scroll est saccadé, lorsque je clique sur un éléments, il met du temps à s'activer.

    Y a t'il quelque chose à respecter avec les JList?

    Je vous remercie.

  2. #2
    Membre expérimenté
    Avatar de Chatanga
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 211
    Par défaut
    1) Un blocage de l'EDT, par exemple si tu mets à jour trop souvent et trop longuement ton ListModel.

    2) Une mise à jour grossière de ton ListModel à coups de fireContentsChanged.

    3) Un affichage trop élaboré utilisant un CellRenderer trop lourd.

    4) ...

    Difficile d'en dire plus sans le code toutefois. Il y a toujours un milliard de raisons possibles dans ce genre de cas. Un copier-coller ne serait sûrement pas idiot pour mieux voir. L'idéal aurait bien-sûr été un copier-coller du code épuré et simplifié reproduisant le problème, mais tu aurais alors sans doute déjà résolu ce dernier.

    Le problème est qu'a présent le scroll est saccadé, lorsque je clique sur un éléments, il met du temps à s'activer.
    Quel est le rapport entre le scroll et le clic ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Par défaut
    Merci pour la réponse, je vais essayer d'optimiser ça. Il n'y a pas vraiment de rapport en le scroll et le clic, mais les deux sont lent.

    Pour le code:
    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
     public void ajouterOnglet(JTabbedPane onglets, int i) throws TwitterException, IOException {
            switch (i) {
                case 1:
                    onglets.addTab(this.model.clientTwitter.twitter.getScreenName() + "'s Friends", icon, new JScrollPane(new JList(new Colonne(model, 1).dlm)), "Publications des amis");
                    break;
                case 2:
                    onglets.addTab("Public", icon, new JScrollPane(new JList(new Colonne(model, 2).dlm)), "Publications publiques");
                    break;
                case 3:
                    onglets.addTab("Recherche", icon, new JScrollPane(new JList(new Colonne(model, 4).dlm)), "La recherche");
                    break;
                case 4:
                    onglets.addTab(this.model.clientTwitter.twitter.getScreenName() + "'s Friends",new JScrollPane(new JList(new Colonne(model, 3).dlm)));
                    break;
                case 0:
                    onglets.addTab(this.model.clientTwitter.twitter.getScreenName() + "'s", new JScrollPane(new JList(new Colonne(model, 0).dlm)));
                    break;
            }
     
        }
    et dlm se contruit avec ce genre de méthode:
    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
    public void getTweet(int type) throws TwitterException {
            dlm = new DefaultListModel();
            switch (type) {
                case 0:
                    remplirListe(estm.clientTwitter.getUserTimelines());
                    break;
                case 1:
                    remplirListe(estm.clientTwitter.getFriendsTimelines());
                    break;
                case 2:
                    remplirListe(estm.clientTwitter.getPublicTimelines());
                    break;
                case 3:
                    remplirListe(estm.clientTwitter.getFriends());
                    break;
                case 4:
                    remplirListe(this.estm.faireRecherche());
                    break;
            }
        }
     
    public void remplirListe(ArrayList<String> ls) {
            for (int i = 0; i < ls.size(); i++) {
                dlm.addElement(ls.get(i));
            }
        }

  4. #4
    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
    La lecture de l'articule suivant est obligatoire.

    En effet toute tâche longue doit être réalisé en dehors du thread Swing (aka EDT)

    http://gfx.developpez.com/tutoriel/j...ing-threading/

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Par défaut
    Après plusieurs test compliqué, j'ai remarqué que ce ne sont "que" les images qui ralentissent toute l'appli.
    je vais essayer de trouver une soluc pour contrer ça, soit par l'ajout de nouveau thread, soit par une image de plus mauvaise qualité :s.

    Merci pour votre aide.

Discussions similaires

  1. Problème de lenteur avec 2 sous-formulaires
    Par picatchou dans le forum Access
    Réponses: 1
    Dernier message: 29/01/2007, 09h48
  2. pb de lenteur avec Index
    Par LeNeutrino dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 19/12/2006, 12h48
  3. JScrollPane avec JListe
    Par youbyoub dans le forum Composants
    Réponses: 4
    Dernier message: 09/06/2006, 17h54
  4. Equivalent .add() avec Jlist
    Par skystef dans le forum Composants
    Réponses: 9
    Dernier message: 01/03/2006, 11h59
  5. [Débutant] Lenteur avec TComPort
    Par PhDt76 dans le forum C++Builder
    Réponses: 22
    Dernier message: 27/09/2003, 22h43

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