title: Swing GUI for appointment system
body: <p>could anybody advise me on how to connect my GUI to my base classes
  I have wrote the gui and designed it, but now need the GUI to interact with another class I made. </p>
  
  <p>edit: added updated code to my thread, added new methods to print out text to the TextFields when buttons are pressed. I.e.  Show Appointments, displays all of the appointments in the textfield next to the button. 
  Also, need to try and add an option for a user to enter their own appointment using the Gregorian calendar format </p>
  
  <pre><code>   package com.appointmentsys;
  
  import javax.swing.JFrame;
  import java.util.GregorianCalendar;
  import javax.swing.BorderFactory;
  import javax.swing.JButton;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.JTextField;
  import java.awt.GridLayout;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  
  
  /**
   * 
   * @author Daniel Burke 
   *
   */
  public class ControllerGUI extends JPanel implements ActionListener{
  
       static JButton button1;
       static JButton button2;
       static JButton button3;
       static JButton button4;
       static JTextField ta;
       static JTextField ta1;
       static JTextField ta2;
       static JTextField ta3;
  
  
      AppointmentBook appBook = new AppointmentBook();
  
      public void MainForm(){
  
          button1.addActionListener(this);
          button2.addActionListener(this);
          button3.addActionListener(this);
          button4.addActionListener(this);
          ta.addActionListener(this);
          ta1.addActionListener(this);
          ta2.addActionListener(this);
          ta3.addActionListener(this);
  
                          }
  
    public static void CreateandShowGUI(){
  
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(10,10));
  
        button1 = new JButton("Add appointment");
        ta = new JTextField();
        /*
        TextAreaOutputStream taos = new TextAreaOutputStream( ta, 60 );
        PrintStream ps = new PrintStream( taos );
        System.setOut( ps );
        System.setErr( ps );
  */
        button2 = new JButton("Remove appointment");
        ta1 = new JTextField();
        button3 = new JButton("Show appointment");
        ta2 = new JTextField();
        button4 = new JButton("Search appointments");
        ta3 = new JTextField();
  
        frame.setContentPane(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
  
  
       panel.add(new JLabel("         "));
       panel.add(new JLabel("        Please select an option: "));
       panel.add(new JLabel("         "));
       panel.add(new JLabel("         "));
       panel.add(button1);
       panel.add(ta);
          panel.add(button2);
          panel.add(ta1); 
          panel.add(button3);
          panel.add(ta2);
          panel.add(button4);
          panel.add(ta3);
          panel.setBorder(BorderFactory.createTitledBorder("Appointment System"));
  
  }
    public  class EventHandler implements ActionListener{
  
  
          public void actionPerformed(ActionEvent e){
              if(e.getSource() == button1){
              appBook.add(new Appointment(new GregorianCalendar(2015, 8+1, 1, 11, 30 ), new GregorianCalendar(2015, 10, 14, 11, 30), "Dyland"));
              }
              else if(e.getSource() == button3){
                  String appointmentInfo = appBook.getAppointment(0).toString();
                  ta2.setText(appointmentInfo);
  
  
  
              }
  
          }
    }
  
      public static void main(String[] args) {
  
          javax.swing.SwingUtilities.invokeLater(new Runnable(){
      public void run(){
          CreateandShowGUI();
          }
              });
          }
  
  
      @Override
      public void actionPerformed(ActionEvent arg0) {
          // TODO Auto-generated method stub
  
      }
  
  
  
  
    }
  
  package com.appointmentsys;
  
  import java.util.ArrayList;
  import java.util.GregorianCalendar;
  
  /**
   * 
   * Controller class will test Appointment/AppointmentBook
   * @author  Daniel Burke 
   *
   */
  public class Controller {
  
      public static void main(String[] args) {
  
          Appointment a1 = new Appointment(new GregorianCalendar(2015, 8+1, 14, 10, 30 ), new GregorianCalendar(2015, 10, 14, 11, 30), "Danny");
          Appointment a2 = new Appointment(new GregorianCalendar(2015, 8+1, 20, 9, 00), new GregorianCalendar(2015, 10, 20, 10, 10), "JOhn");
          Appointment a3 = new Appointment(new GregorianCalendar(2015, 8+1, 21, 14, 00), new GregorianCalendar(2015, 10, 21, 16, 00), "Steve");               
          Appointment a4 = new Appointment(new GregorianCalendar(2015, 8+1, 21, 14, 00), new GregorianCalendar(2015, 10, 21, 16, 00), "Patrick");
  
          AppointmentBook appBook = new AppointmentBook();
          appBook.add(a1);
          appBook.add(a2);
          appBook.add(a3);
          appBook.add(a4);
  
          System.out.println("Appointment is in book: " + appBook.isInBook(a1));
          System.out.println("Appointment is in book: " + appBook.isInBook(a4));
          //appBook.remove(a1);
          appBook.ShowAppointments();
  
  
      }
  }
  
      package com.appointmentsys;
  
  import java.text.SimpleDateFormat;
  import java.util.Calendar;
  import java.util.GregorianCalendar;
  
  
  public class Appointment {
  
      //Appointments have start/end times &amp; dates.
      //Every appointment has a title.
  
      private GregorianCalendar startDateTime;
      private GregorianCalendar endDateTime;
      private String eventTitle;
  
      //default constructor
      public Appointment(){
          this.startDateTime = null;
          this.endDateTime = null;
          this.eventTitle = "";
      }
  
      //constructor
  
      public Appointment(GregorianCalendar startDate, GregorianCalendar endDate, String eventTitle){
          this.startDateTime = startDate;
          this.endDateTime = endDate;
          this.eventTitle = eventTitle;
      }
  
  
      public GregorianCalendar getStartDateTime() {
          return startDateTime;
      }
      public void setStartDateTime(GregorianCalendar startDateTime) {
          this.startDateTime = startDateTime;
      }
      public GregorianCalendar getEndDateTime() {
          return endDateTime;
      }
      public void setEndDateTime(GregorianCalendar endDateTime) {
          this.endDateTime = endDateTime;
      }
      public String getEventTitle() {
          return eventTitle;
      }
      public void setEventTitle(String eventTitle) {
          this.eventTitle = eventTitle;
      }
  
      //toString() method to represent an appointment object
      public String toString(){
  
          String strdate = null; 
          int hours = 0;
          String hrs = null;
          int mins = 0;
          String min = null;
  
          SimpleDateFormat sdf = new SimpleDateFormat("MM/DD/YYYY");
  
          if (getStartDateTime() != null ){
              strdate = sdf.format(getStartDateTime().getTime());
              hours = getStartDateTime().get(Calendar.HOUR);
              hrs = Integer.toString(hours);
              mins = getStartDateTime().get(Calendar.MINUTE);
              min = Integer.toString(mins);
          }
          String s = getEventTitle()+" "+ strdate+" "+ hrs +": "+min;
          return "Appointment: \n" + s;
  
  
  
      }
  
  
  }
  
      package com.appointmentsys;
  
  import java.util.ArrayList;
  
  public class AppointmentBook {
  
      private static final int NOTFOUND = -1; //NOTFOUND int constant 
  
      //We can use an ArrayList to store appointments (you could use a database)
  
      private ArrayList&lt;Appointment&gt; appointmentList  = new ArrayList&lt;Appointment&gt;();
  
      //add method to appointmentbook
  
      /**
       * Adds appointments to the appointmentList 
       * @param a
       */
  
      public void add(Appointment a ){
  
      appointmentList.add(a);
      }
      /**
       * create a new arrayList for all appoints then return all
       * @return
       */
  
      public ArrayList&lt;Appointment&gt; getAllAppointments(){
  
          ArrayList&lt;Appointment&gt; all = new ArrayList&lt;Appointment&gt;(appointmentList);
          return all;
      }
      /**
       * Prints out the list of all the appointsment made
       * 
       */
      public void ShowAppointments()
      {
          ArrayList&lt;Appointment&gt; all = new ArrayList&lt;Appointment&gt;(appointmentList);
          System.out.println();
          System.out.print("All appointments: \n");
  
  
          for(Appointment a: all)
          {
              System.out.println(a);
              System.out.println();
          }
      }
      /**
       * returns -1 if no appointment is found
       * @param tofind
       * @return
       */
      private int find(Appointment tofind)
      {
          int i = 0;
  
          for(Appointment a: appointmentList)
          {
              if(a.equals(tofind)) return i;
              i++;
          }
                  return NOTFOUND;
      }
      /**
       * removes an appointment from the appointmentList
       * @param toRemove
       */
      public void remove(Appointment toRemove){
  
          int location = find(toRemove);
          if(location != NOTFOUND) appointmentList.remove(location);
          else
              throw new IllegalArgumentException("Appointment not found");
      }
      /**
       * 
       * @param a
       * @return
       */
      public boolean isInBook(Appointment a){
          return find(a) != NOTFOUND;
  
      }
  
      public String getAppointment(int i) {
  
          return appointmentList.get(i).toString();
  
      }
  
  }
  </code></pre>