Witam, pytanie jak w temacie, kod ponizej, program sie kompiluje, ale nie dziala tak jak chce, chciałbym aby po wybraniu opcji z jednego choice'a zmienila sie liczba elementow w drugim, ale przy probie zastoswania Kalendarz.WyborDnia.removeAll(); wyskakuje blad, takze przy probie jakiej kolwiek ingerencji w choice'a wyskakuje blad: NullPointerException, dlaczego? [???]

import...

class Okno extends Frame{
        Okno(String nazwa){
                super(nazwa);
                setResizable(true);
                setSize(300,300);
        }
}


class WMListener implements ItemListener{
	
	private Choice WyborMiesiaca;
	private int nowedni;
	
	public WMListener(Choice WyborMiesiaca){
	   	super();
    	this.WyborMiesiaca = WyborMiesiaca;
    }

	public void itemStateChanged(ItemEvent evt) {
        Kalendarz.miesiace = 1 + WyborMiesiaca.getSelectedIndex();
        Kalendarz.cal = new GregorianCalendar(Kalendarz.rok, Kalendarz.miesiace, Kalendarz.dni);
 	int nowedni = Kalendarz.cal.get(Calendar.DAY_OF_MONTH);
 	Kalendarz.WyborDnia.removeAll();
 	
    }
}

public class Kalendarz{
    
    public static Calendar cal = new GregorianCalendar();   
    public static int dni = 1 + cal.get(Calendar.DAY_OF_MONTH);
    public static Choice WyborDnia;
    ....
          
    public Kalendarz() {

        int day = cal.get(Calendar.DAY_OF_MONTH);
	int liczba_dni = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
	
	Choice WyborDnia = new Choice();
		for (int i=1; i<liczba_dni+1; i++){
			WyborDnia.add("" +i);
		}
	WyborDnia.select(day);
		
	Choice WyborMiesiaca = new Choice();

	WyborDnia.addItemListener(new WDListener(WyborDnia));
	WyborMiesiaca.addItemListener(new WMListener(WyborMiesiaca));

        Okno o = new Okno("Kalendarz");       
        o.setLayout(new FlowLayout());

        o.add(WyborDnia);
	o.add(WyborMiesiaca);
        o.setVisible(true);
        }
      
	public static void main(String args[]){
		new Kalendarz();                   
	}
}

Będę wielce wdzięczny za jakąś sensowną poradę.