// TextFrame.java -- text i/o frame // // import java.awt.*; import java.io.*; public class TextFrame extends Object { TextArea textout; TextField textin; CloseTextButton button; Frame frame; public TextFrame (String title) { // create the frame frame = new Frame (title); frame.setLayout (new FlowLayout ()); frame.resize (700, 400); // set up the text output ares textout = new TextArea (10, 70); textout.setEditable (false); frame.add (textout); // set up the text input area textin = new EnterTextField (this); frame.add (textin); // set up the close button button = new CloseTextButton (this); frame.add (button); // show the frame frame.show (); } public void close () { frame.dispose (); } // accessors for text fields void print (String s) { textout.appendText (s); } String read () { String result = textin.getText (); textin.setText (""); return result + "\n"; } // input hook; override this public void notifyInput (String s) { } // close hook; override this public void notifyClose () { } } class EnterTextField extends TextField { TextFrame parent; EnterTextField (TextFrame p) { super (72); setEditable (true); parent = p; } public boolean action (Event e, Object w) { parent.notifyInput (parent.read ()); return true; } } class CloseTextButton extends Button { TextFrame parent; CloseTextButton (TextFrame p) { super ("Close"); parent = p; } public boolean action (Event e, Object w) { parent.notifyClose (); return true; } }