Text Areas

A text area, which is defined in the class javax.swing.JTextArea, can display multiple lines of text.  When the text extends beyond the borders of the widget, the user can view it by manipulating vertical and horizontal scroll bars.  The next screen shot shows a program that displays information about an employee in a text area. 

 

 

The code for this program is in the files TextAreaDemo.java and Employee.java. The first file defines the main window class and the main method. The second file defines an Employee class to represent employee objects. An employee object tracks an employee's name, pay rate, and the hours worked for each of five days.

At program startup, the GUI program adds a text area and two buttons to the window, in the usual manner. It then creates an instance of the Employee class with some sample data, and calls the toString method on this object to obtain the text to display in the text area. The buttons allow the user to view the employee's total hours and total pay. Here is the code for the main window class:

import javax.swing.*;

import BreezySwing.*;

 

public class TextAreaDemo extends GBFrame{

 

   JTextArea outputArea  = addTextArea ("", 1,1,2,5);

   JButton totalHoursBtn = addButton ("Total hours", 6,1,1,1);

   JButton totalPayBtn   = addButton ("Total pay",   6,2,1,1);

 

   private Employee emp;

 

   public TextAreaDemo(){

      int [] hours = {8, 10, 6, 8, 9};

      emp = new Employee ("Ken", 15.25, hours);

      outputArea.setText (emp.toString());

      outputArea.setEditable (false);

   }

 

   public void buttonClicked(JButton buttonObj){

      if (buttonObj == totalHoursBtn)

          messageBox ("Total hours: " + emp.getTotalHours());

      else

          messageBox ("Total pay: $" + emp.computePay());

   }

 

   public static void main(String[] args){

      JFrame frm = new TextAreaDemo();

      frm.setSize (200, 200);

      frm.setTitle ("Employee Info");

      frm.setVisible (true);        

   }

}

 

Note that the text area stretches across five rows and two columns, and that the program has made this area read-only.     

In addition to the getText and setText methods, the JTextArea class includes an append method, which adds text to the end of the existing text rather than replacing it. 

 

 

Back to tutorial Next topic: Dialogs and model/view/controller