Documente Academic
Documente Profesional
Documente Cultură
Tema:
3. Ne propunem ca prin alegerea noului articol adugat n meniu s se activeze un formular care s
permit actualizarea tabelului casa. Structura acestui tabel, aa cum a fost proiectat iniial, este:
.
1
.
5. Odat ce formularul actCasaDialog este activ,
utilizatorul editeaz text n zonele de editare numite
casaCodOper, casaNrDoc, casaDataDoc,
casaSuma i casaDetaliu. La acionarea butonului
Adaugare, textele preluate din zonele de editare
sunt analizate i se ncearc conversia fiecruia la
un tip de dat ateptat. Conversia se face cu
metodele parse aparinnd claselor Integer, Float i
SimpleDateFormat.
n situaia n care textul introdus ntr-una din zonele
de
text conine caractere nepermise pentru tipul de dat
ateptat, se marcheaz acest lucru prin schimbarea
valorii variabilei logice dateValide din true n false.
Marcarea acestor situaii pe poate face la
producerea
excepiei
de
tipul
NumberFormatException lansat de metodele
Integer.parseInt i Float.parseFloat. Metoda SimpleDateFormat.parse utilizat n secvena de cod
urmtoare nu genereaz o astfel de excepie, dar returneaz referina null n cazul n care eueaz.
Analiznd codul de mai jos, observai c n cazul editrii unor valori necorespunztoare se activeaz
fereastra de dialog messageBoxDialog care afieaz un mesaj de avertizare. Observai aceast
fereastr n figura urmtoare:
.
Nu uitai s adugai proiectului dvs. aceast fereastr de dialog nainte de a face referire la ea.
La acionarea butonului OK fereastra messageBoxDialog se nchide i se revine n fereastra
precedent.
Secvena de cod care descrie evenimentul click asupra butonului Adaugare este:
private void adaugareActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
// variabile pentru getText
int cod;
int nr;
Date data;
float suma;
String detaliu;
// variabila flag
boolean dateValide=true;
// preluare date din JTextField
try
{
cod=Integer.parseInt(casaCodOper.getText());
}
catch(NumberFormatException ex)
{
dateValide=false;
}
try
{
nr=Integer.parseInt(casaNrDoc.getText());
}
catch(NumberFormatException ex)
{
dateValide=false;
}
// preluare data calendaristica
SimpleDateFormat fmt=new SimpleDateFormat("dd-MMM-yyyy");
ParsePosition pos=new ParsePosition(0);
data=fmt.parse(casaDataDoc.getText(), pos);
// nu lanseaza o exceptie, ci
// returneaza null daca esueaza
if(data==null)
dateValide=false;
try
{
suma=Float.parseFloat(casaSuma.getText());
}
catch(NumberFormatException ex)
{
dateValide=false;
}
detaliu=casaDetaliu.getText();
if(dateValide)
{
// adauga inregistrare in tabelul casa
System.out.println("articol de adaugat");
}
else
{
// date eronate
//System.out.println("date eronate");
messageBoxDialog.setVisible(true);
messageBoxDialog.pack();
}
}
casaCodOper.setText("");
casaNrDoc.setText("");
casaSuma.setText("");
casaDetaliu.settext("");
Pentru aceasta modificai metoda actCasaActionPerformed prin adugare de cod nou. Dup
modificare, metoda arat astfel:
private void actCasaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
// TODO add your handling code here:
comanda = cnx.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rezultat=comanda.executeQuery("select * from casa");
casaCodOper.setText("");
casaNrDoc.setText("");
casaSuma.setText("");
casaDetaliu.setText("");
//pregatire data curenta
Calendar dataC=Calendar.getInstance();
SimpleDateFormat fmt=new SimpleDateFormat("dd-MMM-yyyy");
dataCurenta=dataC.getTime();
dataCurentaString=fmt.format(dataCurenta);
//afisare data curenta
casaDataDoc.setText(dataCurentaString);
} catch (SQLException ex) {
//Logger.getLogger(gestiune.class.getName()).log(Level.SEVERE, null,
ex);
actCasaDialog.setVisible(true);
actCasaDialog.pack();