Bonjour,
Est-ce que quelqu'un connaît un moyen de récupérer, au mieux, les chaînes affichées dans un JList, à défaut les objets listés?
Je ne trouve pas de méthode standard et je pense quand même que ça doit exister...
Merci beaucoup!![]()
Bonjour,
Est-ce que quelqu'un connaît un moyen de récupérer, au mieux, les chaînes affichées dans un JList, à défaut les objets listés?
Je ne trouve pas de méthode standard et je pense quand même que ça doit exister...
Merci beaucoup!![]()
Les chaines affichées dans la JList sont les toString() des objets de la liste.
Sauf s'il y a un renderer, auquel cas il n'y a pas de règle.
Merci, en effet il y a un renderer. Celui-ci génère des résumés de ligne de façon à ce que le texte s'adapte à la largeur de la liste et qu'on ait pas à scroller.
Mon problème c'est que j'ajoute intéractivement des listes et à chaque fois que j'en ajoute des nouvelles, les scrollBar horizontales des listes précédentes doublent de largeur ( en bref, la scrollbar va plus loin qu'il ne le faut et si on va à droite, on se retrouve à scroller sur du blanc... )
J'ai trouvé le soucis, dans mon renderer, je fixe la largeur max d'une cellule en assignant la plus longue chaîne en tant que prototype :
Le problème ici, c'est que quand le liste est rétrécie, on conserve quand même la chaîne prototype précédente, qui est trop grande, d'où une scrollBar trop large.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if(list.getPrototypeCellValue() == null || list.getPrototypeCellValue().toString().length() < row.length() ) { list.setFixedCellWidth(0); list.setPrototypeCellValue(row); }
J'ai pensé pouvoir ajouter ça pour vérifier que la liste prototype est bien dans la liste, mais ça me renvoie des erreurs, alors que j'ai bien un DefaultListModel sur mes listes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DefaultListModel dlm = (DefaultListModel) list.getModel(); if(list.getPrototypeCellValue() == null || list.getPrototypeCellValue().toString().length() < row.length() || !dlm.contains(list.getPrototypeCellValue().toString())) { list.setFixedCellWidth(0); list.setPrototypeCellValue(row); }
Partager