Bonsoir
Après de multiple recherche sur le net et après avoir recherché une réponse dans les discussions ouvertes, je n'ai encore trouvé aucun problème similaire au mien.
Dans le cadre d'une application client-serveur de type SIRC (le client étant bien entendu avec interface graphique), je crée des JList, JTextField, JScrollPane, JLabel et JButton.
La fenêtre principale de mon client est une JList et non une JTextArea.
Cette JList est associée à une JScrollPane pour ajuster le contenu de la JList avec des JScrollBar.
Elle a été déclaré comme suit :
Pour tester le bon fonctionnement de la JList, j'ai utilisé un JTextField et un JButton, qui ajoute d'abord le contenu du JTextField dans le vecteur maConvers avant de mettre à jour la JList.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 // chatArea est le nom de la JList chatArea = new JList(); [...] // maConvers est un Vecteur de String chatArea = new JList(maConvers); // chatScroll est la JScrollPane associée à ma chatArea chatScroll = new JScrollPane(chatArea); chatScroll.setLocation(170, 205); chatScroll.setSize(545, 400); this.getContentPane().add(chatScroll);
Comme dans tout chat, je souhaite que, lorsque ma JList est plus grande que la dimension allouée (si je peux m'exprimer ainsi), j'ai ma JScrollBar qui se colle à la fin de ma JList.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == this.sendButton) { maConvers.addElement(this.sendField.getText() + "\n"); chatArea.setListData(maConvers); chatScroll.getVerticalScrollBar().setValue(chatScroll.getVerticalScrollBar().getMaximum()); } }
J'ai "implémenté" cette solution en faisant :
Mon problème est le suivant : lorsque j'envoie des messages, après avoir dépassé la taille de ma JList, ma méthode employée ci-dessus ne me positionne pas au dernier élément de ma JList mais à l'avant dernier, ce que je ne comprends pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part chatScroll.getVerticalScrollBar().setValue(chatScroll.getVerticalScrollBar().getMaximum());![]()
J'ai essayé une autre méthode, qui me fait exactement la même chose.
Pourriez vous m'expliquer mon erreur et m'aider à résoudre ce problème gênant?
Merci à vous
Dans le fichier ci-joint, test3 a été envoyé mais la JScrollBar reste à "l'avant dernière position".
Partager