Bonjour,
je suis entrain de développer l'IHM d'un petit programme.
Dans ma fenêtre j'ai un bouton qui lance un long traitement.
J'ai donc ajouté un JtextArea à ma fenêtre pour faire une sorte de console, et y écrire l'état du traitement en cours.
Mais cette console me pose deux problèmes.
1) Afin d'écrire et de mettre à jour la zone j'ai écrit la fonction suivante :
Mais le update n'est pas très fluide, il fait clignoter la zone de texte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private static void log(String message) { String text = MainFrame.logArea.getText(); MainFrame.logArea.setText(text + "\n" + message); MainFrame.logArea.setCaretPosition(MainFrame.logArea.getText().length() - 1); MainFrame.logArea.update(MainFrame.logArea.getGraphics()); }
Dois-je passer par un thread pour supprimer ces scintillements ?
2) Malgré la ligne suivante, la zone de texte ne sroll pas automatiquement, sauf à la fin du traitement :
j'ai essayé en déclarant mon champ ainsi, mais toujours pareil :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MainFrame.logArea.setCaretPosition(MainFrame.logArea.getText().length() - 1);
Comment faire pour afficher les dernières lignes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DefaultCaret caret = (DefaultCaret) logArea.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
D'avance merci pour vos réponses,
Bebuck.
Partager