// SimpleTextField.java package util; import java.awt.*; import java.awt.event.*; public class SimpleTextField extends Panel { public static final int PADDING = 5; public SimpleTextField (String label) { super(); init(label, ""); } public SimpleTextField (String label, String initText) { super(); init(label, initText); } public String getText () { return myField.getText(); } public void setText (String text) { myField.setText(text); } public String getLabel () { return myLabel.getText(); } public void setLabel (String text) { myLabel.setText(text); } // do nothing by default public void actionPerformed (String text) {} private void init (String label, String initText) { myLabel = new Label(label); myField = new TextField(initText, initText.length() + PADDING); setLayout(new BorderLayout()); add("West", myLabel); add("Center", myField); myField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { SimpleTextField.this.actionPerformed(((TextField)e.getSource()).getText()); } }); myField.addTextListener( new TextListener() { public void textValueChanged(TextEvent e) { SimpleTextField.this.textValueChanged(((TextField)e.getSource()).getText()); } }); } protected void textValueChanged (String text) { if (myField.getColumns() == text.length()) { myField.setColumns(myField.getColumns() + 2); } } private Label myLabel; private TextField myField; }