10
votes

Word wrap in jlist Articles

J'ai un jlist avec des noms d'éléments très longs qui provoquent la barre de défilement horizontale apparaissent dans le volet de défilement.

Y a-t-il de toute façon que je peux work work de sorte que tout le nom de l'élément entier apparaisse dans 2 rangées encore peut être sélectionné en un clic? C'est-à-dire qu'il devrait toujours se comporter comme un seul élément mais être affiché dans deux rangées.


Voici ce que j'ai fait après avoir vu l'exemple ci-dessous

J'ai ajouté une nouvelle classe à mon projet mycellrenderer, puis je suis allé ajouté myList.setcellrenderer (nouveau mycellrenderer (80)); dans le code post-création de ma liste. Y a-t-il autre chose que je dois faire?


3 commentaires

Il semble de rappeler quelqu'un (était-ce Andrew) en utilisant un jlabel, HTML et de simples feuilles de style pour résoudre quelque chose comme ça.


Oui, bien sûr, c'était Andrew: est -Il-peigne-word-wrap-propriété-of-jlabel-existent . Je crois que ce concept peut également être utilisé dans votre rendu cellulaire personnalisé.


Une autre alternative (pourquoi tout le monde me regarda-t-il drôle?) Est d'utiliser un embout d'outil pour le nom long et la "valeur est ..." pour l'étiquette elle-même. Bien sûr, cela ne fonctionnerait pas très bien avec l'un exemple de béton donné dans la réponse hfoes. Je détesterais devoir avoir à la souris sur la liste pour distinguer tous les gars appelés "Mohamed".


3 Réponses :


20
votes

Yep, en utilisant le code d'Andrew, j'ai proposé quelque chose comme ceci: xxx


4 commentaires

Ce n'était pas mes smelts qui l'ont fait, mais celui-ci ici: La publication d'Andrew's . Je ne peux pas uplifier sa réponse plus d'une fois, mais j'encourage que quiconque pense que ma réponse a été utile de uppote le lien.


(Comme vous le savez tous, y compris @ADEWREW THOMPSON, je n'aime pas beaucoup les tours HTML, surtout pas si mal utilisé pour le dimensionnement codé dur ), pourquoi ne pas utiliser la réelle de la liste au lieu de la liste fixe?


Merci beaucoup pour l'exemple !! J'apprécie vraiment cela!!


Hey @ hoverftfulleels, je viens d'essayer ce code ... Cela ne semble pas fonctionner pour moi ... Je ne développe rien sur le navigateur C'est une application pure Java et cela ne sort pas du texte ... Pourriez-vous m'aider. Voici ce que j'ai fait, j'ai ajouté une nouvelle classe à mon projet Mycellrenderer, puis j'ai ajouté myList.SeCellrenderer (nouveau mycellrenderer (80)); Dans le code de création de ma liste. Y a-t-il autre chose que je dois faire? Merci pour votre aide et Paience



-1
votes

Vous pouvez également calculer de manière dynamique la largeur (au lieu d'une valeur fixe): xxx

Donc, si le panneau redimensionne la liste, l'emballage reste correct.

Mise à jour

et le résultat ressemble à ceci: Entrez la description de l'image ici


1 commentaires

Cela ne fonctionne pas. Si la jlist est redimensionnée, la hauteur de la ligne ne sera pas ajustée et les choses visuelles amusantes se produisent. Consultez mon image ci-jointe ... J'ai ajouté Green and Red pour vous aider à illustrer.



0
votes

Cela peut être fait encore plus facile. Vous pouvez créer une jlist par ConsATRUCTOR avec ListModel. Dans CustomlistModel étend une méthode abstractlistmodel, getElementat () peut renvoyer la chaîne avec le même texte formaté HTML. Donc, cette façon fait la même chose sans modification de rendu cellulaire.


1 commentaires

L'emballage est l'interface utilisateur et non liée à un modèle. Changer le modèle pour accueillir l'interface utilisateur est mauvais.