So I've been following this tutorial here Link to tutorial. I cant seem to get the application displaying properly though. When I run the application I get this
  
  Here is my code, I'm using embedded classes.
  import java.util.Date;
 import java.util.Calendar;
 import javax.microedition.lcdui.*;
 import javax.microedition.midlet.MIDlet;
 
 
 public class CreateCalendar
 {
     /**
      * Array of strings which holds data for the month and day 
      * for the calendar application.
      */
     static final String[] month_labels = new String[]
     {
         "January", "Febuary", "March", "April", "May", "June", "July", "August", "Sepetember", "October", "November", "Decemeber"
     };
     static final String[] weekdays_labels = new String[]
     {
         "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun"
     };
 
     public int startWeekday = 0;
     public int padding = 1;
     public int borderWidth = 4;
     public int borderColor = 0x009900;
 
     /**
      * Weekday Labels
      */
     public Font weekdayFont = Font.getDefaultFont();
     public int weekdayBackgroundColor = 0x009900;
     public int weekdayColor = 0xffffff;
 
     /**
      * Month/Year Labels
      */
     public Font headerFont = Font.getDefaultFont();
     public int headerBackgroundColor = 0x009900;
     public int headerColor = 0xffffff;
 
     /**
      * Cells Labels
      */
     public Font font = Font.getDefaultFont();
     public int foreColor = 0xffffff;
     public int backgroundColor = 0x009900;
     public int selectedBackgroundColor = 0xCCFF00;
     public int selectedForegroundColor = 0xffffff;
 
     /**
      * Size properties 
      */
     int width = 0;
     int height = 0;
     int headerHeight = 0;
     int weekHeight = 0;
     int cellWidth = 0;
     int cellHeight = 0;
 
     /**
      * Internal time properties
      */
     long currentTimeStamp = 0;
     Calendar calendar = null;
     int weeks = 0;
 
     public CreateCalendar(Date date)
     {
     calendar = Calendar.getInstance();
     setDate(date);
     initialize();
     }
 
     public Date getSelectedDate()
     {
         return calendar.getTime();
     }
 
     public void setDate(Date d)
     {
         currentTimeStamp = d.getTime();
         calendar.setTime(d);
         this.weeks = (int)Math.ceil(((double)getStartWeekday() + getMonthDays()) / 7);
     }
 
     public void setDate(long timestamp)
     {
         setDate(new Date(timestamp));
     }
 
     public void initialize()
     {
         this.cellWidth = font.stringWidth("MM") + 2 * padding;
         this.cellHeight = font.getHeight() + 2 * padding;
         this.headerHeight = headerFont.getHeight() + 2 * padding;
         this.weekHeight = weekdayFont.getHeight() + 2 * padding;
         this.width = 7 * (cellWidth + borderWidth) + borderWidth;
         initHeight();
     }
 
     void initHeight()
     {
         this.height = headerHeight + weekHeight + this.weeks * (cellHeight + borderWidth) + borderWidth;
     }
 
     int getMonthDays()
     {
         int month = calendar.get(Calendar.MONTH);
         switch (month)
         {
             case 3:
             case 5:
             case 8:
             case 10:
                 return 30;    
             case 1:
                 int year = calendar.get(Calendar.YEAR);
                 return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ? 29 : 28;
             default:
                 return 31;
         }
     }
 
     int getStartWeekday()
     {
         Calendar c = Calendar.getInstance();
         c.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
         c.set(Calendar.YEAR, calendar.get(Calendar.YEAR));
         c.set(Calendar.DAY_OF_MONTH, 1);
         return (c.get(Calendar.DAY_OF_WEEK) + 5) % 7;
     }
 
     public void KeyPressed(int key)
     {
         switch(key)
         {
             case Canvas.UP:
                 go(-7);
                 break;
             case Canvas.DOWN:
                 go(7);
                 break;
             case Canvas.RIGHT:
                 go(1);
                 break;
             case Canvas.LEFT:
                 go(-1);
                 break; 
         }
     }
 
     void go(int delta)
     {
         int prevMonth = calendar.get(Calendar.MONTH);
         setDate(currentTimeStamp + 864000000 * delta);
         if(calendar.get(Calendar.MONTH) != prevMonth)
         {
             initHeight();
         }
     }
 
     public void paint(Graphics g)
     {
         g.setColor(backgroundColor);
         g.fillRect(0, 0, width, height);
         g.setFont(headerFont);
         g.setColor(headerColor);
         g.drawString(month_labels[calendar.get(Calendar.MONTH)] + " " + calendar.get(Calendar.YEAR), width / 2, padding, Graphics.TOP | Graphics.HCENTER);
         g.translate(0, headerHeight);
         g.setColor(weekdayBackgroundColor);
         g.fillRect(0, 0, width, weekHeight);
         g.setColor(weekdayColor);
         g.setFont(weekdayFont);
 
         for(int i = 0; i < 7; i++)
         {
             g.drawString(weekdays_labels[(i + startWeekday) % 7], borderWidth + i * (cellWidth + borderWidth) + cellWidth / 2, padding, Graphics.TOP | Graphics.HCENTER);
         }
 
         g.translate(0, weekHeight);
         g.setColor(borderColor);
 
         for(int i = 0; i <= weeks; i++)
         {
             g.fillRect(0, i * (cellHeight + borderWidth), width, borderWidth);
         }
         for(int i = 0; i <=7; i++)
         {
             g.fillRect(i * (cellWidth + borderWidth), 0, borderWidth, height - headerHeight - weekHeight);
         }
 
         int days = getMonthDays();
         int dayIndex = (getStartWeekday() - this.startWeekday + 7) % 7;
         g.setColor(foreColor);
         int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
 
         for(int i = 0; i < days; i++)
         {
             int weekday = (dayIndex + i) % 7;
             int row = (dayIndex + i) / 7;
             int x = borderWidth + weekday * (cellWidth + borderWidth) + cellWidth / 2;
             int y = borderWidth + row * (cellHeight + cellWidth) + padding;
 
             if(i + 1 == currentDay)
             {
                 g.setColor(selectedBackgroundColor);
                 g.fillRect(borderWidth + weekday * (cellWidth + borderWidth), borderWidth + row * (cellHeight + borderWidth), cellWidth, cellHeight);
                 g.setColor(selectedForegroundColor);
             }
 
             g.drawString("" + (i + 1), x, y, Graphics.TOP | Graphics.HCENTER);
 
             if(i + 1 == currentDay)
             {
                 g.setColor(foreColor);
             }
         }
         g.translate(0, - headerHeight - weekHeight);
     }
 
     private Date getTime() {
         throw new UnsupportedOperationException("Not yet implemented"); //TODO get current Time
     }
 
  //=====================================================================================================================//   
 
     public class CalFrontEnd extends MIDlet
 {
 
   public CreateCalendar calendar;
   protected Display display;
   protected Form mainForm;
 
   public CalFrontEnd()
   {
 
   }
 
   public void startApp()
   {
        calendar = new CreateCalendar(new Date());
        calendar.headerFont = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE);
        calendar.weekdayFont = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
        calendar.weekdayBackgroundColor = 0xccccff;
        calendar.weekdayColor = 0x0000ff;
        calendar.headerColor = 0xffffff;
        calendar.initialize();
 
 
     display.getDisplay(this).setCurrent(
     new intCalendar(this));
 
   }
 
   public void pauseApp()
   {
   }
 
   public void destroyApp(boolean destroy)
   {
     notifyDestroyed();
   }
 }}