001 package com.croftsoft.core.gui;
002
003 import java.awt.*;
004 import java.awt.event.*;
005 import java.io.*;
006 import java.net.*;
007 import javax.swing.*;
008 import javax.swing.event.*;
009 import javax.swing.border.*;
010
011 import com.croftsoft.core.lang.NullArgumentException;
012
013 /*********************************************************************
014 * Creates a JPanel containing a scrollable JTextArea.
015 *
016 * @version
017 * 2001-09-21
018 * @since
019 * 2001-09-21
020 * @author
021 * <a href="https://www.croftsoft.com/">David Wallace Croft</a>
022 *********************************************************************/
023
024 public final class TextPanel
025 extends JPanel
026 //////////////////////////////////////////////////////////////////////
027 //////////////////////////////////////////////////////////////////////
028 {
029
030 private final JTextArea jTextArea;
031
032 //////////////////////////////////////////////////////////////////////
033 //////////////////////////////////////////////////////////////////////
034
035 /*********************************************************************
036 * Main constructor.
037 *
038 * @param text
039 *
040 * May be null.
041 *
042 * @param panelBackgroundColor
043 *
044 * May be null.
045 *********************************************************************/
046 public TextPanel (
047 String text,
048 Color panelBackgroundColor )
049 //////////////////////////////////////////////////////////////////////
050 {
051 super ( new BorderLayout ( ), true ); // isDoubleBuffered
052
053 if ( panelBackgroundColor != null )
054 {
055 setBackground ( panelBackgroundColor );
056 }
057
058 jTextArea = new JTextArea ( );
059
060 jTextArea.setEditable ( false );
061
062 jTextArea.setLineWrap ( true );
063
064 jTextArea.setWrapStyleWord ( true );
065
066 // How can I set the border to 2 characters wide?
067
068 jTextArea.setBorder ( new EmptyBorder ( 4, 4, 4, 4 ) );
069
070 if ( text != null )
071 {
072 jTextArea.setText ( text );
073 }
074
075 add ( new JScrollPane ( jTextArea ), BorderLayout.CENTER );
076 }
077
078 /*********************************************************************
079 * Convenience constructor.
080 *
081 * <pre>
082 * this ( null, panelBackgroundColor );
083 * </pre>
084 *
085 * @param panelBackgroundColor
086 *
087 * May be null.
088 *********************************************************************/
089 public TextPanel ( Color panelBackgroundColor )
090 //////////////////////////////////////////////////////////////////////
091 {
092 this ( null, panelBackgroundColor );
093 }
094
095 /*********************************************************************
096 * Convenience constructor.
097 *
098 * <pre>
099 * this ( null, null );
100 * </pre>
101 *********************************************************************/
102 public TextPanel ( )
103 //////////////////////////////////////////////////////////////////////
104 {
105 this ( null, null );
106 }
107
108 //////////////////////////////////////////////////////////////////////
109 //////////////////////////////////////////////////////////////////////
110
111 public JTextArea getJTextArea ( ) { return jTextArea; }
112
113 public void setText ( String text )
114 //////////////////////////////////////////////////////////////////////
115 {
116 jTextArea.setText ( text );
117 }
118
119 //////////////////////////////////////////////////////////////////////
120 //////////////////////////////////////////////////////////////////////
121 }