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 :

[JScrollPane] n'affiche pas toute ma JList dynamique


Sujet :

Composants Java

  1. #1
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut [JScrollPane] n'affiche pas toute ma JList dynamique
    Bonjour,

    J'ai dans ma GUI une JList qui contient les résultats d'une recherche. Ceux-ci aussi arrivent au fur et à mesure qu'ils sont trouvés, donc la JList grandit en même temps. Pour accéder aux éléments sortant du cadre de la JList, j'ai mis celle-ci dans un JScrollPane. Mais ce dernier n'affiche pas les scrollbars

    Création du JScrollPane :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private JScrollPane getScroller() {
    		if(scroller == null) {
    			scroller = new JScrollPane(getJList(), 
    					JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    					JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    			scroller.setPreferredSize(getJList().getPreferredSize());
    		}
    		return scroller;
    	}
    L'ajout d'éléments dans la JList (results est un DefaultListModel):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void resultatTrouve(Result r) {
    		results.addElement(r);
    		getScroller().getViewport().updateUI();
    	}
    J'ai aussi essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void resultatTrouve(Result r) {
    		results.addElement(r);
    		getJList().revalidate();
    	}
    Quelqu'un a une piste à me proposer ?

    Merci de votre aide,

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Points : 267
    Points
    267
    Par défaut
    Salut,

    Essai de faire getScroller ().revalidate ();
    Dans ta méthode revalidate. Car c'est le JScrollPane qui décide s'il doit afficher ou non les scrollbars. Tu as juste essayé d'actualiser la liste et la vue du scroll.
    Voilà j'espère que ca va marché.

    a+

  3. #3
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Non, même résultat...

    La méthode du revalidate(), je l'avais trouvée sur la doc de Sun, c'est censé marché parcque JList implémente Scrollable, et peut donc prévenir le JScrollPane qu'il a changé de taille. Mais on dirait que j'ai loupé quelque chose...

    Merci pour la réponse,

  4. #4
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    J'avais effectivement loupé quelque chose, pourtant écrit dans le didacticiel de Sun.
    Il faut mettre à jour la dimension préférée de la liste avant de la "revalider".

    J'ai fait ça en ajoutant la hauteur d'une cellule à la hauteur préférée actuelle, hauteur que je trouve avec la méthode getCellBounds(int, int).

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    J'ai eu le même problème lorsque j'avais fait un setPreferredSize() sur mes JList.
    Il suffit de les enlever des Jlist, de n'en mettre qu'au JScrollPane éventuellement, et cela s'affiche correctement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. La TStatusBar n'affiche pas tout mon texte
    Par gandf dans le forum C++Builder
    Réponses: 7
    Dernier message: 10/04/2007, 17h21
  2. Requête de sélection n'affiche pas tout
    Par tojiji dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 03/08/2006, 21h33
  3. Applet n'affiche pas tout
    Par zespoofiz dans le forum Applets
    Réponses: 1
    Dernier message: 23/05/2006, 15h17
  4. [SQL-Server] [MySQL] Le mssql_fetch_array() n'affiche pas tout
    Par PoZZyX dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/09/2005, 10h50
  5. [XSL]Comment faire ceci ?? Mon for-each n'affiche pas tout !
    Par Devil666 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/07/2005, 15h04

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