// PersonApplet.java import java.applet.*; import java.awt.*; import java.util.*; public class PersonApplet extends ObjectApplet implements Observer { static final String oStringChangedAddress = "changedAddress" .intern(); static final String oStringChangedName = "changedName" .intern(); static final String oStringChangedPhone = "changedPhone" .intern(); private TextField oFieldName; private TextField oFieldAddress; private TextField oFieldPhone; private Person oPerson; // CONSTRUCTORS public PersonApplet ( ) { init(); } // PUBLIC METHODS public void clear ( ) { setPerson(null); } public Object getObject ( ) { return getPerson(); } public Person getPerson ( ) { return oPerson; } public boolean handleEvent ( Event poEvent ) { Object oObject; TextField oTarget; if ( Event.ACTION_EVENT == poEvent.id || Event.TAB == poEvent.key) { oTarget = (TextField)poEvent.target; oObject = oPerson.objectForString(oTarget.getText()); if (oFieldAddress == oTarget) getPerson().setAddress(oObject); else if (oFieldName == oTarget) getPerson().setName(oObject); else if (oFieldPhone == oTarget) getPerson().setPhone(oObject); } return super.handleEvent(poEvent); } public void init ( ) { setLayout(new GridLayout(3,1,5,5)); oFieldName = new TextField(20); oFieldAddress = new TextField(20); oFieldPhone = new TextField(20); add(oFieldName); add(oFieldAddress); add(oFieldPhone); clear(); } public void setObject ( Object poObject ) { setPerson((Person)poObject); } public void setPerson ( Person poPerson ) { if (null != oPerson) oPerson.deleteObserver(this); oPerson = poPerson; if (null != oPerson) { oPerson.addObserver(this); oFieldName .setText(oPerson.getName ().toString()); oFieldAddress .setText(oPerson.getAddress ().toString()); oFieldPhone .setText(oPerson.getPhone ().toString()); } else { oFieldName .setText(""); oFieldAddress .setText(""); oFieldPhone .setText(""); } } public void update ( Observable poPerson, Object poString ) { if (oPerson == poPerson) { if (oStringChangedAddress == poString) oFieldAddress.setText(oPerson.getAddress().toString()); else if (oStringChangedName == poString) oFieldName.setText (oPerson.getName ().toString()); else if (oStringChangedPhone == poString) oFieldPhone.setText (oPerson.getPhone ().toString()); } } }