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ę.