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 :

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());
}
Mais le update n'est pas très fluide, il fait clignoter la zone de texte.
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
MainFrame.logArea.setCaretPosition(MainFrame.logArea.getText().length() - 1);
j'ai essayé en déclarant mon champ ainsi, mais toujours pareil :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
DefaultCaret caret = (DefaultCaret) logArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
Comment faire pour afficher les dernières lignes ?

D'avance merci pour vos réponses,

Bebuck.