import java.awt.*; class AddressBook extends Frame { public static void main(String argv[]) { new AddressBook(); } AddressBook() { Container labelPanel, textPanel; InfoPanel infoPanel = new InfoPanel(); AddressList list = new AddressList(infoPanel); add("West", list); add("Center", infoPanel); resize(500, 200); show(); } } class InfoPanel extends Panel { final int TextWidth = 40; final int TextHeight = 6; TextField nameT; TextField phoneT; TextArea addressT; InfoPanel() { GridBagLayout gridbag = new GridBagLayout(); setLayout(gridbag); GridBagConstraints c = new GridBagConstraints(); c.weightx = 0.0; c.anchor = GridBagConstraints.EAST; GridBagConstraints c2 = new GridBagConstraints(); c2.gridwidth = GridBagConstraints.REMAINDER; c2.weightx = 1.0; c2.fill = GridBagConstraints.HORIZONTAL; Label nameL = new Label("Name"); nameT = new TextField(TextWidth); Label phoneL = new Label("Phone"); phoneT = new TextField(TextWidth); Label addressL = new Label("Snail Mail Address"); addressT = new TextArea(TextHeight, TextWidth); add(nameL); add(nameT); add(phoneL); add(phoneT); add(addressL); add(addressT); gridbag.setConstraints(nameL, c); gridbag.setConstraints(nameT, c2); gridbag.setConstraints(phoneL, c); gridbag.setConstraints(phoneT, c2); gridbag.setConstraints(addressL, c); gridbag.setConstraints(addressT, c2); } public void setName(String name) { nameT.setText(name); } public void setPhone(String phone) { phoneT.setText(phone); } public void setAddress(String address) { addressT.setText(address); } } class SelectList extends List { public boolean handleEvent(Event evt) { switch (evt.id) { case Event.LIST_SELECT: return selected(evt, ((List) evt.target).getSelectedIndex(), ((List) evt.target).getSelectedItem()); case Event.LIST_DESELECT: return deselected(evt, ((List) evt.target).getSelectedIndex()); default: return super.handleEvent(evt); } } public boolean selected(Event evt, int index, String item) { return false; } public boolean deselected(Event evt, int index) { return false; } } class Address { protected String name; protected String phone; protected String address; Address(String n, String p, String a) { name = n; phone = p; address = a; } public String getName() { return name; } public String getPhone() { return phone; } public String getAddress() { return address; } } class AddressList extends SelectList { protected Address list[] = new Address[4]; private InfoPanel info; AddressList(InfoPanel infoPanel) { info = infoPanel; // these should be loaded from a file - just lazy list[0] = new Address("Jan Newmarch", "201 2422", "Faculty of ISE\n" + "Uni of Canberra"); this.addItem(list[0].getName()); list[1] = new Address("Terry Webb", "201 5341", "Faculty of ISE\n" + "Uni of Canberra"); this.addItem(list[1].getName()); } public boolean selected(Event evt, int index, String item) { Address addr = list[index]; info.setName(item); info.setPhone(addr.getPhone()); info.setAddress(addr.getAddress()); return true; } }