Ahoj,
dělám semestrální práci a mám ji téměř hotovou, ale narazil jsem na problém, se kterým si nevím rady. Mám program, který udržuje v prioritní frontě seznam kulturních akcí a pro komfort musím vytvořit jednoduché grafické prostředí. Programuji v Netbeans. Teď k problému.
Každá kulturní akce si nese název akce, datum konání (chtěl bych ve formátu DD.MM.YYYY), místo konání a čas začátku. Můj problém je v tom, že nevím, jak ošetřit vstupní zadávaný formát data, který uživatel vyplní. Zkoušel jsem to řešit přes GregorianCalendar, Calendar apod., ale nikdy jsem se nedočkal správného výsledku. Jakmile zadám například "22.10.", "22.1.", tak je vše v pořádku, zachytím chybu a vypíšu hlášku, že formát vkládaného data je špatný. Jakmile ale zadám například "22.10.2", "22.10.20" nebo "22.10.201", tak mi program spadne s chybou "java.lang.StringIndexOutOfBoundsException". Mě je jasné, proč, ale netuším, jak to vyřešit.
Můj kód:
private void buttonVlozAkciActionPerformed(java.awt.event.ActionEvent evt) {
String datum = textfieldDatumKonani.getText();
if (!jeSpravnyFormatData(datum)) {
textareaVypis.append("Špatně zadané parametry akce!\n");
return;
}
String nazevAkce = textfieldNazevAkce.getText();
String mistoKonani = textfieldMistoKonani.getText();
int zacatekAkce = Integer.parseInt(textfieldCasZacatku.getText());
int den = Integer.parseInt(datum.substring(0, 2));
int mesic = Integer.parseInt(datum.substring(3, 5));
mesic -= 1;
String zadanyRok = datum.substring(6, 10); // zde je problém s tou výjimkou
if (zadanyRok.length() != 4) {
textareaVypis.append("Špatně zadané parametry akce!\n");
return;
}
int rok = Integer.parseInt(zadanyRok);
GregorianCalendar zadaneDatum = new GregorianCalendar(rok, mesic, den);
if (jeVseZadane(nazevAkce, zadaneDatum, mistoKonani, zacatekAkce)) {
KulturniAkce novaAkce = new KulturniAkce(nazevAkce, zadaneDatum,
mistoKonani, zacatekAkce);
kulturniAkce.vloz(novaAkce);
vypisAkci(novaAkce);
} else {
textareaVypis.append("Špatně zadané parametry akce!\n");
}
}
Nevíte někdo jak to jednoduše ošetřit? To GUI není podstatnou náplní práce, takže bych to chtěl řešit opravdu co nejjednodušeji, hlavně aby to fungovalo. Ještě bych doplnil, že pole pro vkládání data je typu JTextField.
Děkuji za pomoc...