Re: Possible easy diagnostic outputting from multiple threads to the one text frame
In article
<2c3b6ed9-fab7-4759-ad47-2ef5f1ee6a77@u26g2000yqu.googlegroups.com>,
Lew <lew@lewscanon.com> wrote:
markspace wrote:
Here's an example. ??This class is, I believe, thread-safe,
although quite simple.
class TextAreaHandler extends Handler {
?? ?? private final JTextArea view;
?? ?? public TextAreaHandler( JTextArea view )
?? ?? {
?? ?? ?? ??this.view = view;
?? ?? }
?? ?? @Override
?? ?? public void publish( LogRecord record )
?? ?? {
?? ?? ?? ??view.append( record.getMessage() );
?? ?? ?? ??view.append( '\n' );
?? ?? }
?? ?? @Override
?? ?? public void flush()
?? ?? {
?? ?? ?? ??// no-op
?? ?? }
?? ?? @Override
?? ?? public void close()
?? ?? {
?? ?? ?? ??// possibly dispose the top-level window here
?? ?? }
}
I worried about the 'view.append()' actions seeming not to be on the
EDT until I looked at the Javadocs for 'JTextArea#append()': "This
method is thread safe, although most Swing methods are not. Please
see _Threads and Swing_ for more information."
As a convenience when invoking append() form another thread, the
DefaultCaret update policy may be set to ALWAYS_UPDATE in order to
cause the text area to scroll automatically.
<http://java.sun.com/javase/6/docs/api/javax/swing/text/DefaultCaret.html>
This article elaborates:
<http://tips4java.wordpress.com/2008/10/22/text-area-scrolling/>
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>