/* * [TestJTextArea.java] * * Summary: demonstrate the use of javax.swing.JTextArea. * * Copyright: (c) 2009-2017 Roedy Green, Canadian Mind Products, http://mindprod.com * * Licence: This software may be copied and used freely for any purpose but military. * http://mindprod.com/contact/nonmil.html * * Requires: JDK 1.8+ * * Created with: JetBrains IntelliJ IDEA IDE http://www.jetbrains.com/idea/ * * Version History: * 1.0 2009-01-01 initial version */ package com.mindprod.example; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.Document; import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.Insets; import static java.lang.System.*; /** * demonstrate the use of javax.swing.JTextArea. * * @author Roedy Green, Canadian Mind Products * @version 1.0 2009-01-01 initial version * @since 2009-01-01 */ public final class TestJTextArea { /** * Debugging harness for a Frame * * @param args command line arguments are ignored. */ public static void main( String args[] ) { SwingUtilities.invokeLater( new Runnable() { /** * fire up a JFrame on the Swing thread */ public void run() { final JFrame jFrame = new JFrame(); final Container contentPane = jFrame.getContentPane(); // The user hitting enter inserts a \n character into the text. final JTextArea jTextArea = new JTextArea( "this is a TEST\n" + "of multiline." ); // select colours jTextArea.setBackground( Color.BLACK ); jTextArea.setForeground( Color.YELLOW ); // select font jTextArea.setFont( new Font( "Dialog", Font.BOLD, 15 ) ); // provide some space around the inside jTextArea.setMargin( new Insets( 4, 4, 4, 4 ) ); // automatically wrap lines jTextArea.setLineWrap( true ); // break lines on word, rather than character boundaries. jTextArea.setWrapStyleWord( true ); // You need some sort of border, perhaps created with // contrasting background colour or with an explicit border or // else the JTextArea will blend into the background // and you won't be able to see item. jTextArea.setBorder( BorderFactory.createLoweredBevelBorder() ); jTextArea.setEnabled( true ); jTextArea.setEditable( true ); // textArea.InputMethodListener does not work unless you override // getInputMethodRequests. // Must add DocumentListener to the associated document, not the // JTextArea. Document document = jTextArea.getDocument(); document.addDocumentListener( new DocumentListener() { /** * Gives notification that an attribute or set of attributes * changed. * @param e the document event */ public void changedUpdate( DocumentEvent e ) { out.println( "changed: " + jTextArea.getText() ); } /** * Gives notification that there was an insert into the * document. The range given by the DocumentEvent bounds the * freshly inserted region. * @param e the document event */ public void insertUpdate( DocumentEvent e ) { out.println( "inserted: " + jTextArea.getText() ); } /** * Gives notification that a portion of the document has * been removed. The range is given in terms of what the * view last saw (that is, before updating sticky * positions). * @param e the document event */ public void removeUpdate( DocumentEvent e ) { out.println( "removed: " + jTextArea.getText() ); } } ); contentPane.add( jTextArea ); jFrame.setSize( 100, 100 ); jFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); jFrame.validate(); jFrame.setVisible( true ); } } ); } // end main }