Bonjour à tous,
Je me mets au Swing pour essayer de faire un Tchat.
Les messages sur le Tchat seront chacun dans une cellule d'une JList (pour récuperer le pseudo du message envoyé avec un evenement mouseClicked sur chaque message indépendemment).
En implementant un cellRenderer à ma JList qui extends un JTextArea, j'arrive à passer a la ligne et donc à récupérer l'intégralité des messages longs.
Seulement, je suis obligé de spécifier une hauteur de cellule à ma JList.
Jusque là, ce n'est pas très grave, sauf que quand l'utilisateur envoie un message qui fait une seule ligne, ca laisse un grand blanc en dessous.
Voilà la partie de mon code qui concerne la JList
Si vous voyez une autre solution que la JList qui pourrait répondre à mes attentes (j'avais essayer de regarder les JTable par exemple...), n'hésitez pas à me faire part de vos idées.
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 JPanel salonCentre = new JPanel(); JList chpText = new JList(); (...) salonCentre.setLayout(new BorderLayout()); sclChpText.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); chpText.setCellRenderer(new MUCRenderer()); chpText.setListData(new Object[]{"Ligne 1", "Ligne 2 aaaaa aaaaaaa aaaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaa aaaaaaaa aaaaaaa aaaaaaaaa aaaaaaaaa"}); salonCentre.add(BorderLayout.CENTER, sclChpText); (...) public class MUCRenderer extends JTextArea implements ListCellRenderer { private static final long serialVersionUID = 1L; public MUCRenderer() { super(); setLineWrap(true); setWrapStyleWord(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { setSize(list.getWidth(),(list.getFontMetrics(list.getFont()).getHeight())); setText(value.toString()); return this; } }
Merci d'avance.
TyR.
Partager