Funktioniert auf Rechner mit amerikanichen Zeiteinstellung nicht einwandfrei.

aufgabe44.java
import java.util.*;
import java.applet.Applet;
import java.awt.*;

public class aufgabe44 extends Applet
{
    Label jlabel = new Label("Jahr :");
    TextField jtext = new TextField("", 5);
    Label mlabel = new Label("Monat :");
    Choice mchoice = new Choice();
    Button neu;
    String monate[] = {"Januar", "Februar", "März", "April",
    "Mai", "Juni", "Juli", "August", "September",
    "Oktober", "November", "Dezember"};
    int amonat;
    int ajahr=2001;

    public void init()
    {
        setSize(600,500);
        setVisible(true);
        add(jlabel);
        jtext.setText(String.valueOf(ajahr));
        add(jtext);
        add(mlabel);
        for (int i = 0; i < 12; i++)
        mchoice.addItem(monate[i]);
        mchoice.select(amonat);
        add(mchoice);
        neu = new Button("NEU Zeichnen");
        add(neu);
    }

    public boolean action(Event evt, Object arg)
    {
        int ejahr;
        if (evt.target instanceof Button)
        {
            String Knopf=arg.toString();
            if (Knopf=="NEU Zeichnen")
            {
                amonat = mchoice.getSelectedIndex();
                ejahr = Integer.parseInt(jtext.getText());
                ajahr = ejahr;
                repaint();
                return true;
            }
        }
        return false;
    }

    public void paint(Graphics g)
    {
        int tage=0;
        int x=40;
        int y=130;

        Calendar kal = new GregorianCalendar(ajahr, amonat, 1);

        switch(amonat)
        {
            case 0:
                g.drawString("Januar "+ajahr,15,50);tage=31;break;
            case 1:
                g.drawString("Februar "+ajahr,15,50);
                if (((ajahr%4 == 0 && ajahr%100 != 0) || ajahr%400 == 0) && amonat == 1) tage = 29;
                else tage=28;break;
            case 2:
                g.drawString("März "+ajahr,15,50);tage=31;break;
            case 3:
                g.drawString("April "+ajahr,15,50);tage=30;break;
            case 4:
                g.drawString("Mai "+ajahr,15,50);tage=31;break;
            case 5:
                g.drawString("Juni "+ajahr,15,50);tage=30;break;
            case 6:
                g.drawString("Juli "+ajahr,15,50);tage=31;break;
            case 7:
                g.drawString("August "+ajahr,15,50);tage=31;break;
            case 8:
                g.drawString("September "+ajahr,15,50);tage=30;break;
            case 9:
                g.drawString("Oktober "+ajahr,15,50);tage=31;break;
            case 10:
                g.drawString("November "+ajahr,15,50);tage=30;break;
            case 11:
                g.drawString("Dezember "+ajahr,15,50);tage=31;
        }

        g.drawString("Montag",20,80);
        g.drawString("Dienstag",100,80);
        g.drawString("Mittwoch",180,80);
        g.drawString("Donnerstag",250,80);
        g.drawString("Freitag",340,80);
        g.drawString("Samstag",420,80);
        g.drawString("Sonntag",500,80);

        kal.set(ajahr, amonat, 1);

        int wotag = kal.get (Calendar.DAY_OF_WEEK);

        if (wotag==1)
            x=520;
        else{
         for (int i=wotag-1; i > 1; i--)
               x+=80;
        }

        kal.set(Calendar.MONTH, amonat);

        for (int i= 1; i <= tage; i++) {

            kal.set(Calendar.DATE, i);

            if (kal.get(Calendar.DAY_OF_WEEK) == kal.getFirstDayOfWeek()) {
              y+=50;x=40; }

            g.setColor(Color.magenta);
            g.drawString(i+"" ,x,y);
            g.setColor(Color.black);
            g.drawLine(x-30,y+20,x+35,y+20);//untere Line
            g.drawLine(x-30,y+20,x-30,y-30);//linke Line
            g.drawLine(x+35,y+20,x+35,y-30);//rechte line
            g.drawLine(x-30,y-30,x+35,y-30);//obere Line
            x+=80;
        }
    }
}