Sunteți pe pagina 1din 6

Laborator 7

Tema:

crearea unor formulare utiliznd mediul de programare Netbeans pentru:


adugarea de nregistrri n tabelele unei baze de date Oracle
conversia unui String la Date
conversia unui Date la String
conversia Calendar -> Date

1. Utiliznd mediul de programare Netbeans, deschidei proiectul Gestiune stocuri (vezi


laboratorul 6).
2. Dezvoltai sistemul de meniuri al aplicaiei prin adugarea unui articol de meniu n schema
Tabele -> Actualizare. Noul articol de meniu va avea asociat textul Casa i se va numi actCasa.

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:

Noul formular va fi numit actCasaDialog i aspectul su este redat n figura urmtoare:

.
1

4. La activarea formularului actCasaDialog toate zonele de editare de text vor fi blank.


Pregtirea aspectului acestui formular la momentul activrii se face n metoda care descrie
evenimentul click asupra articolului de meniu actCasa. Deci, vorbim despre metoda
actCasaActionPerformed. Codul care formeaz blocul acestei metode este urmtorul:

.
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();
}
}

6. La acionarea butonului Renuntare din formularul actCasaDialog valorile introduse n zonele de


text sunt lsate s se piard:
private void renuntareActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

casaCodOper.setText("");
casaNrDoc.setText("");
casaSuma.setText("");
casaDetaliu.settext("");

7. Dorim ca formularul actCasaDialog s afieze iniial, la activare, n zona de text casaDataDoc,


data curent a calculatorului.

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);

System.out.println("eroare activare actCasaDialog");


System.exit(1);

actCasaDialog.setVisible(true);
actCasaDialog.pack();

8. Modificai metoda renuntareActionPerformed astfel nct s afieze data curent a calculatorului


n zona controlului casaDataDoc.
9. n situaia n care n urma analizei textelor introduse se obin valori corecte, acestea vor constitui
obiectul unei noi nregistrri care trebuie inserat n tabelul casa. Metoda
adaugareActionPerformed prezentat mai sus nu realizeaz adugarea acestei nregistrri, ci doar
afieaz n fereastra Output mesajul articol de adaugat. Completai codul cu secvena
corespunzatoare.

S-ar putea să vă placă și