The Java Program: TextForm.java

  1 // TextForm.java
  2 
  3 import javax.swing.JPanel;
  4 import javax.swing.JLabel;
  5 import javax.swing.JFrame;
  6 import javax.swing.JButton;
  7 import javax.swing.JTextField;
  8 
  9 import java.awt.Insets;
 10 import java.awt.GridBagConstraints;
 11 import java.awt.GridBagLayout;
 12 import java.awt.BorderLayout;
 13 import java.awt.Container;
 14 
 15 import java.awt.event.*;
 16 
 17 public class TextForm extends JPanel {
 18 
 19    private final JTextField[] tf;
 20 
 21    // Create a form with the given labels, tooltips, and sizes
 22    public TextForm (String[] labels, String[] tips, int[] widths) {
 23       tf = new JTextField[labels.length];
 24 
 25       setLayout (new GridBagLayout());
 26       final GridBagConstraints gbc = new GridBagConstraints();
 27       gbc.anchor = GridBagConstraints.WEST;
 28       gbc.insets = new Insets (3,3,3,3);
 29 
 30       // Add labels and fields as specified
 31       for (int i=0; i<labels.length; i++) {
 32          final JLabel l = new JLabel (labels[i]);
 33 
 34          // Create an accessibility-friendly field
 35          tf[i] = new JTextField (widths[i]);
 36          tf[i].setToolTipText (tips[i]); // sets accessible desc too!
 37          l.setLabelFor (tf[i]);          // sets accessibleName for tf[i]!
 38 
 39          // lay out label & field
 40          gbc.gridy = i;
 41          gbc.gridx = 0;
 42          add(l, gbc);
 43          gbc.gridx = 1;
 44          add(tf[i], gbc);
 45     }
 46   }
 47 
 48    // Get the contents of one of the TFs.
 49    public String getEnteredText(int index) {
 50       return tf[index].getText();
 51    }
 52 
 53    // A simple example program
 54    public static void main(String[] args) {
 55       final String[] labels = { "First Name", "Middle Initial", "Last Name", "Age" };
 56       final String[] descs = { "First Name","Middle Initial", "Last Name", "Age" };
 57 
 58       final int[] widths = { 15, 1, 15, 3 };
 59 
 60       final TextForm form = new TextForm(labels, descs, widths);
 61 
 62       // A button that dumps the field contents
 63       final JButton dump = new JButton("Dump");
 64       class DumpListener implements ActionListener {
 65          public void actionPerformed(ActionEvent ev) {
 66             System.out.println(form.getEnteredText(0));
 67             System.out.println(form.getEnteredText(1));
 68             System.out.println(form.getEnteredText(2));
 69             System.out.println(form.getEnteredText(3));
 70          }
 71       }
 72       dump.addActionListener (new DumpListener());
 73 
 74       final JFrame f = new JFrame("Text Form");
 75       frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Requires Java 1.3
 76       final Container c = f.getContentPane();
 77       c.setLayout (new BorderLayout());
 78       c.add(form, BorderLayout.CENTER);
 79       c.add(dump, BorderLayout.SOUTH);
 80       f.pack();
 81       f.setVisible(true);
 82   }
 83 }