import java.awt.FlowLayout; import javax.swing.*; import javax.swing.event.*; public class OOPStudentDelegate extends JPanel { private OOPStudent model = null; private JTextField nameField, emailField, programmeField, startField; private JLabel nameLabel, emailLabel, programmeLabel, startLabel; OOPStudentDelegate(){ nameField = new JTextField(20); nameField.setEditable(false); emailField = new JTextField(10); emailField.setEditable(false); programmeField = new JTextField(8); programmeField.setEditable(false); startField = new JTextField(8); startField.setEditable(false); nameLabel = new JLabel("Name:"); emailLabel = new JLabel("Email:"); programmeLabel = new JLabel("Programme:"); startLabel = new JLabel("Starting semester:"); setLayout( new VerticalFlowLayout(VerticalFlowLayout.TOP) ); JPanel jp = new JPanel(); jp.add(nameLabel); jp.add(nameField); add(jp); jp = new JPanel(); jp.add(emailLabel); jp.add(emailField); add(jp); jp = new JPanel(); jp.add(programmeLabel); jp.add(programmeField); add(jp); jp = new JPanel(); jp.add(startLabel); jp.add(startField); add(jp); nameField.addCaretListener(new CaretListener(){ public void caretUpdate(CaretEvent e){ if (model != null) model.setName( nameField.getText() ); } }); emailField.addCaretListener(new CaretListener(){ public void caretUpdate(CaretEvent e){ if (model != null) model.setEmail( emailField.getText() ); } }); programmeField.addCaretListener(new CaretListener(){ public void caretUpdate(CaretEvent e){ if (model != null) model.setProgramme( programmeField.getText() ); } }); } public void setModel(OOPStudent s){ model = s; if (s == null){ nameField.setText(""); nameField.setEditable(false); emailField.setText(""); emailField.setEditable(false); programmeField.setText(""); programmeField.setEditable(false); startField.setText(""); startField.setEditable(false); }else{ nameField.setText( model.getName() ); nameField.setEditable(true); emailField.setText( model.getEmail() ); emailField.setEditable(true); programmeField.setText( model.getProgramme() ); programmeField.setEditable(true); startField.setText( model.getStart() ); startField.setEditable(false); } } }