// OOPStudent (Panel) // Modified: Carsten Schuermann // Date: Sat Mar 25 22:02:34 2006 import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; public class OOPStudentPanel extends JPanel { private OOPStudent model = null; private JLabel nameLabel, emailLabel, programmeLabel, startLabel; private JTextField nameField, emailField, programmeField, startField; OOPStudentPanel(){ setLayout( new VerticalFlowLayout(VerticalFlowLayout.TOP) ); // Panel 1: contains label and text field for names. nameLabel = new JLabel("Name:"); nameField = new JTextField(20); nameField.setEditable(false); // Listening relationship 2. nameField.addCaretListener(new CaretListener(){ public void caretUpdate(CaretEvent e){ if (model != null) model.setName( nameField.getText() ); } }); JPanel jpname = new JPanel(); jpname.add(nameLabel); jpname.add(nameField); add(jpname); // Panel 2: contains label and text field for email. emailLabel = new JLabel("Email:"); emailField = new JTextField(10); emailField.setEditable(false); // Listening relationship 3. emailField.addCaretListener(new CaretListener(){ public void caretUpdate(CaretEvent e){ if (model != null) model.setEmail( emailField.getText() ); } }); JPanel jpemail = new JPanel(); jpemail.add(emailLabel); jpemail.add(emailField); add(jpemail); // Panel 3: contains label and text field for programme. programmeLabel = new JLabel("Programme:"); // Listening relationship 4. programmeField = new JTextField(8); programmeField.setEditable(false); programmeField.addCaretListener(new CaretListener(){ public void caretUpdate(CaretEvent e){ if (model != null) model.setProgramme( programmeField.getText() ); } }); JPanel jpprogramme = new JPanel(); jpprogramme.add(programmeLabel); jpprogramme.add(programmeField); add(jpprogramme); // Panel 4: contains label and text field for start. startLabel = new JLabel("Starting semester:"); startField = new JTextField(8); startField.setEditable(false); // noCaretListner for start, it is never editable. JPanel jpstart = new JPanel(); jpstart.add(startLabel); jpstart.add(startField); add(jpstart); } 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); } } }