What's the wrong with the number of days?
<pre><code>import javax.swing.*;
import javax.swing.text.DateFormatter;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;

 public class Calendar extends JFrame implements ActionListener {
private JButton Next, Previous;
private JLabel CurrDate,Time;
private JLabel Days[];
private JButton [] dayButtons;
private JPanel P1,P2,P3,P4,P5;
private int year , month , day ,ch;
String S1;
GregorianCalendar GC=new GregorianCalendar();;
int DayOfWeek=GC.get(GC.DAY_OF_WEEK);

Color c = new Color(169,97,182);
Color c2 = new Color(241,233,241);
String[] months =  {"January", "February", "March", "April", "May", "June", "July",    "August", "September", "October", "November", "December"};
Calendar()
{        
    super( "Calendar" );

    year = GC.get(GC.YEAR);
    month = GC.get(GC.MONTH);
    day = GC.get(GC.DATE);


    Previous = new JButton ("&lt;&lt;");
    Previous.setBackground(Color.LIGHT_GRAY);
    Previous.addActionListener(this);
    Next = new JButton ("&gt;&gt;");
    Next.setBackground(Color.LIGHT_GRAY);
    Next.addActionListener(this);

    CurrDate = new JLabel ("                   "+ months[month]+"        "+year+"               ");
    CurrDate.setForeground(Color.WHITE);
    CurrDate.setFont(new Font ("Serif",Font.ITALIC+Font.BOLD,15));
    CurrDate.setAlignmentX(CENTER_ALIGNMENT);
    Days = new JLabel[7];
    Days[0] = new JLabel ("Sun         ");
    Days[1] = new JLabel ("Mon         ");
    Days[2] = new JLabel ("Tue         ");
    Days[3] = new JLabel ("Wed         ");
    Days[4] = new JLabel ("Thu         ");
    Days[5] = new JLabel ("Fri            ");
    Days[6] = new JLabel ("Sat         ");
    for(JLabel l : Days)
    {
        l. setForeground(Color.WHITE);
        l.setAlignmentX(LEFT_ALIGNMENT);
    }
    Time = new JLabel ();
    Time.setText(GC.get(GC.HOUR)+":"+GC.get(GC.MINUTE)+":"+GC.get(GC.SECOND));
    Time.setForeground(Color.WHITE);
    if( month ==0 || month ==2 || month == 4 || month ==6 || month==7 || month ==9 || month ==11)
    {
        ch = 1;
    }
    else
    {
        ch = 2;
    }

    P1 = new JPanel();
    P2 = new JPanel();
    P3 = new JPanel();
    P4 = new JPanel();
    P5 = new JPanel();
    P5.setLayout(new BorderLayout());
    P1.add(Previous); 
    P1.add(CurrDate);   
    DrawCalendar(DayOfWeek,year,month);
    P1.add(Next);
    P2.add(Days[0]);
    P2.add(Days[1]);
    P2.add(Days[2]);
    P2.add(Days[3]);
    P2.add(Days[4]);
    P2.add(Days[5]);
    P2.add(Days[6]);

    P4.add(Time);
    P1.setBackground(c);
    P2.setBackground(c);
    P4.setBackground(c);

    P5.add (P1, BorderLayout.NORTH);
    P5.add (P2, BorderLayout.CENTER);
    add (P5,BorderLayout.NORTH);
    add (P3, BorderLayout.CENTER);
    add (P4, BorderLayout.SOUTH);
    }

private void DrawCalendar(int DayOfWeek, int year, int month) {
    P3.setLayout( new GridLayout(7,7,3,3));
    dayButtons = new JButton [49];


    if(DayOfWeek == 1 &amp;&amp; ch ==1)
    {
        for ( int i = 0; i &lt; 31; i++ )
         { dayButtons[ i ] = new JButton(  i+1 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 31; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 2 &amp;&amp; ch ==1)
    {
        for ( int i = 0; i &lt; 1; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i = 1; i &lt; 32; i++ )
         { dayButtons[ i ] = new JButton(  i +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 32; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 3 &amp;&amp; ch ==1)
    {
        for ( int i = 0; i &lt; 2; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =2; i &lt; 33; i++ )
         { dayButtons[ i ] = new JButton(  i-1 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 33; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 4 &amp;&amp; ch ==1)
    {
        for ( int i = 0; i &lt; 3; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =3; i &lt; 34; i++ )
         { dayButtons[ i ] = new JButton(  i-2 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 34; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 5 &amp;&amp; ch ==1)
    {
        for ( int i = 0; i &lt; 4; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =4; i &lt; 35; i++ )
         { dayButtons[ i ] = new JButton(  i-3 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 35; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 6 &amp;&amp; ch ==1)
    {
        for ( int i = 0; i &lt; 5; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =5; i &lt; 36; i++ )
         { dayButtons[ i ] = new JButton(  i-4 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 36; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 7 &amp;&amp; ch ==1)
    {
        for ( int i = 0; i &lt; 6; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =6; i &lt; 37; i++ )
         { dayButtons[ i ] = new JButton(  i-5 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 37; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 1 &amp;&amp; ch ==2)
    {
        for ( int i = 0; i &lt; 30; i++ )
         { dayButtons[ i ] = new JButton( i+1+"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 30; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 

    }
    if(DayOfWeek == 2 &amp;&amp; ch ==2)
    {
        for ( int i = 0; i &lt; 1; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =1; i &lt; 31; i++ )
         { dayButtons[ i ] = new JButton(  i +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 31; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 3 &amp;&amp; ch ==2)
    {
        for ( int i = 0; i &lt; 2; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =2; i &lt; 32; i++ )
         { dayButtons[ i ] = new JButton(  i-1 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 32; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 4 &amp;&amp; ch ==2)
    {
        for ( int i = 0; i &lt; 3; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =3; i &lt; 33; i++ )
         { dayButtons[ i ] = new JButton(  i-2 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 33; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 5 &amp;&amp; ch ==2)
    {
        for ( int i = 0; i &lt; 4; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =4; i &lt; 35; i++ )
         { dayButtons[ i ] = new JButton(  i-3 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 35; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 6 &amp;&amp; ch ==2)
    {
        for ( int i = 0; i &lt; 5; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =5; i &lt; 36; i++ )
         { dayButtons[ i ] = new JButton(  i-4 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 36; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    if(DayOfWeek == 7 &amp;&amp; ch ==2)
    {
        for ( int i = 0; i &lt; 6; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
        for ( int i =6; i &lt; 37; i++ )
         { dayButtons[ i ] = new JButton(  i-5 +"" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(c2);
         } 
        for ( int i = 37; i &lt; 49; i++ )
         { dayButtons[ i ] = new JButton( "" ); 
         P3.add( dayButtons[ i ] );
         dayButtons[i].addActionListener(this);
         dayButtons[i].setBackground(Color.LIGHT_GRAY);
         } 
    }
    for( int i = DayOfWeek-1; i&lt;49 ; i++)
    {
        if( i- DayOfWeek+2 == GC.get(GC.DATE))
        {
            dayButtons[i].setBackground(c);
        }
    }


}


public void actionPerformed(ActionEvent arg0) {


    if(arg0.getSource()== Previous)
    {   clear();


        if(month !=0)
        {
            month --;

            if( month ==0 || month ==2 || month == 4 || month ==6 || month==7 || month ==9 || month ==11)
            {
                ch=1;
            }
            else
            {
                ch=2;
            }

        }
        else
        {
            year--;
            month=11;
            ch=1;
        }
        CurrDate.setText ("                   "+ months[month]+"        "+year+"               ");
        GregorianCalendar cal = new GregorianCalendar(year, month, 1);
        int d=cal.get(cal.DAY_OF_WEEK);
        DayOfWeek=d;
        DrawCalendar(d,year,month);

        P4.add(Time);
        P1.setBackground(c);
        P2.setBackground(c);
        P4.setBackground(c);
    }
    if(arg0.getSource()== Next)
    {
        clear();

        if(month !=11)
        {
            month ++;
            if( month ==0 || month ==2 || month == 4 || month ==6 || month==7 || month ==9 || month ==11)
            {
                ch=1;
            }
            else
            {
                ch=2;
            }
        }
        else
        {
            year++;
            month=0;
            ch=1;

        }
        CurrDate.setText ("                   "+ months[month]+"        "+year+"               ");
        GregorianCalendar cal = new GregorianCalendar(year, month, 1);
        int d=cal.get(cal.DAY_OF_WEEK);
        DayOfWeek=d;
        DrawCalendar(d,year,month);
        P4.add(Time);
        P1.setBackground(c);
        P2.setBackground(c);
        P4.setBackground(c);

    }   
    for( int i=DayOfWeek-1; i&lt;30+DayOfWeek; i++)
    {
        if(arg0.getSource()==dayButtons[i])
        {
            S1 = JOptionPane.showInputDialog(this,"Insert your Note");

        }
    }


}

private void clear() {
    for(int i =0; i&lt;6;i++)
    {
        for(int j=0;j&lt;7;j++)
        {
            P3.removeAll();
        }
    }

}

public static void main(String [] args){
    Calendar C = new Calendar();
    C.setSize(400,315);

    C.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    C.setVisible(true);
    C.setResizable(false);
    }


}
</code></pre>

<p>hello all,,, :)</p>

<p>the problem with this Calendar the number of days in each month !
the code I wrote ,, doesn't work as what it should do !
I don't know where is the problem 
If any one can help,, thnx anyway!</p>

<p><img src="http://i.stack.imgur.com/pLNA6.png" alt="enter image description here"></p>
