Bonjour à tous,
Je suis confrontée à un problème qui, je crois, est très ancien, mais qui, je suppose, a dû être résolu depuis longtemps avec les dernières versions de Java.
Dans mon interface, je place un Panel contenant un jscrollpane contenant une jtextarea. Un petit extrait:
Cette jtextarea est destinée à tracer les opérations de l'utilisateur en appelant la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 vue_trace = new JPanel(); vue_trace.setLayout(new java.awt.BorderLayout()); jsp1 = new JScrollPane(); console = new JTextArea(); console.setEditable(false); console.setRows(3); jsp1.setViewportView(console); vue_trace.add(jsp1, java.awt.BorderLayout.CENTER);
Jusque-là tout va bien. Mais quand l'utilisateur fait défiler la scrollbar ou quand j'utilise le positionnement automatique avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void setConsole(String txt) { console.append(txt+"\n"); console.validate(); jsp1.validate(); }
l'affichage du texte dans la jtextarea est tout pourri : les lignes se chevauchent, sont répétées 2 fois... Si on retaille manuellement la fenêtre l'affichage redevient correct. Mais je ne peux pas demander ça aux utilisateurs, je vais me faire lyncher! Il faudrait peut-être ajouter un listener sur la scrollbar? Mais ça me paraît compliqué...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 javax.swing.text.DefaultCaret caret = (javax.swing.text.DefaultCaret)console.getCaret(); caret.setUpdatePolicy(javax.swing.text.DefaultCaret.ALWAYS_UPDATE);
Y a t'il une solution simple, propre et rapide (parfaite, quoi!)?
Merci de votre aide.
Jacqueline
Partager