J
jc_usernet
Hello.
I'm back into JAVA again and am curious to know the response from the
clever JAVA community about
my wish for an "easy diagnostic outputting from multiple threads to
the one text frame".
My current solution that I would like to improve on is:
-------------------------------------------------------
// DiagnosticOutput.java
// Class DiagnosticOutput updates JTextArea with output
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DiagnosticOutput extends JFrame {
private JTextArea outputArea;
// the constructor
public DiagnosticOutput ( )
{
super( "Demonstrating Product & Consumer Thread" );
outputArea = new JTextArea( 20, 30 );
outputArea.setFont( new Font( "Monospaced", Font.PLAIN, 12 ) );
this.getContentPane().add( new JScrollPane( outputArea ) );
// set some properties of the "this" object
this.setSize( 555, 500 );
this.setVisible( true );
this.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
}
// this is the method for the writing the data to the JFrame
public void put( String messageToAppend )
{
// invokeLater i understand is the thread safe way of running
the
// run method of the runnable object that is passed as a
parameter.
// Note that the runnable object also has the JTextArea object
and the
// message to append as parameters to it's constructor.
SwingUtilities.invokeLater( new RunnableOutput( outputArea,
messageToAppend ) );
}
} // end class
-------------------------------------------------------
This seems to do what I want for now. However it find this wanting
since I always have to create
an object and pass the reference around to all the participating
objects.
Is it possible to have a class without the need to explicitly create a
object for the output I want?
I am thinking along the lines of a static method like
DiagnosticOutput.put( String stringToAppend )
and first time usage creates the object and subsequent usage appends
to this hidden (from the application)
object. So all I need do is simply invoke this method at the various
location within the application.
Regards JC....
I'm back into JAVA again and am curious to know the response from the
clever JAVA community about
my wish for an "easy diagnostic outputting from multiple threads to
the one text frame".
My current solution that I would like to improve on is:
-------------------------------------------------------
// DiagnosticOutput.java
// Class DiagnosticOutput updates JTextArea with output
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DiagnosticOutput extends JFrame {
private JTextArea outputArea;
// the constructor
public DiagnosticOutput ( )
{
super( "Demonstrating Product & Consumer Thread" );
outputArea = new JTextArea( 20, 30 );
outputArea.setFont( new Font( "Monospaced", Font.PLAIN, 12 ) );
this.getContentPane().add( new JScrollPane( outputArea ) );
// set some properties of the "this" object
this.setSize( 555, 500 );
this.setVisible( true );
this.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
}
// this is the method for the writing the data to the JFrame
public void put( String messageToAppend )
{
// invokeLater i understand is the thread safe way of running
the
// run method of the runnable object that is passed as a
parameter.
// Note that the runnable object also has the JTextArea object
and the
// message to append as parameters to it's constructor.
SwingUtilities.invokeLater( new RunnableOutput( outputArea,
messageToAppend ) );
}
} // end class
-------------------------------------------------------
This seems to do what I want for now. However it find this wanting
since I always have to create
an object and pass the reference around to all the participating
objects.
Is it possible to have a class without the need to explicitly create a
object for the output I want?
I am thinking along the lines of a static method like
DiagnosticOutput.put( String stringToAppend )
and first time usage creates the object and subsequent usage appends
to this hidden (from the application)
object. So all I need do is simply invoke this method at the various
location within the application.
Regards JC....