import java.awt.BorderLayout;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.DefaultListModel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class ListExample extends JPanel
{
   private static final long serialVersionUID = 1L;
   private JList exampleJList;
   private DefaultListModel exampleDefaultModel;
	
   public  ListExample()
   {	
      exampleDefaultModel = new DefaultListModel();
      exampleDefaultModel.addElement("Joe");
      exampleDefaultModel.addElement("Monica");
      exampleDefaultModel.addElement("Kelley");
   	
      exampleJList = new JList(exampleDefaultModel);
      exampleJList.setSelectedIndex(0);
      exampleJList.setVisibleRowCount(6);
      JScrollPane listScrollPane = new JScrollPane(exampleJList);
      add(listScrollPane, BorderLayout.CENTER);
   	
   }// end constructor

		
	
   public static void main(String[] args) 
   {
      ListExample le = new ListExample();
   	
      System.out.println("My list contains " + le.exampleDefaultModel.size() + " items."); // Shows number of items in list
      System.out.println("This is the list: ");
      le.printElements(le);
   	
      System.out.println("");
      le.exampleDefaultModel.addElement("Dr. Ramsey"); // Add element to bottom of list
      System.out.println("New List: ");
      le.printElements(le);
   	
      System.out.println("");
      le.exampleDefaultModel.add(2,"George Washington"); // Adds item to specific index in list
      System.out.println("New List: ");
      le.printElements(le);
   	
      le.exampleDefaultModel.remove(4);
      System.out.println("");
      System.out.println("New List: ");
      le.printElements(le);
   	
      System.out.println("");
      System.out.println("What is the first element in my list? " + le.exampleDefaultModel.firstElement()); // Shows first element
   
   	
      javax.swing.SwingUtilities.invokeLater(
            new Runnable() 
            {
               public void run() 
               {
                  createAndShowGUI();
               }
            });
   
   } //end main



   public void printElements(ListExample le)
   {
      int index = 0;
   	
      for(int i = 0; i < le.exampleDefaultModel.size(); i++)
      {	
         System.out.println(le.exampleDefaultModel.get(index));
         index++;
      }
   	
   } // end function

   private static void createAndShowGUI() {
    //Create and set up the window.
      JFrame frame = new JFrame("List");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   
    //Create and set up the content pane.
      JComponent newContentPane = new ListExample();
      newContentPane.setOpaque(true); //content panes must be opaque
      frame.setContentPane(newContentPane);
   
    //Display the window.
      frame.pack();
      frame.setVisible(true);
   } // end function


} // end class

