1. Obiectivele lucrrii nsuirea noiunilor de baz referitoare la componentele SWING; nsuirea noiunilor de baz referitoare la clasele J ComboBox, J ProgressBar, J Slider; nsuirea caracteristicilor particulare ale fiecrei clase n parte; Construirea unei interfee cu utilizatorul care are ca obiectiv incrementarea i decrementarea unui contor cu modificarea valorii acestuia prin intermediul unui obiect de tip bar scal i afiarea lui ntr-un obiect de tip bar de afiare, precum i un formular de creare a unei csue de e-mail n care ziua, luna i anul naterii se aleg prin intermediul unor obiecte de tip list derulabil. 2. Aparatura i suporturile utilizate PC n configuraia unitate central, monitor, tastatur; Precizrile din prezentul ndrumar; Manualul utilizatorului limbajului de programare J AVA; Mediul de dezvoltare integrat NetBeans; Documentaie on-line pe siteul http:\\java.sun.com. 3. Breviar Exist situaii n care utilizatorul trebuie s aleag anumite valori predefinite. Aceast msur se impune deoarece utilizatorul trebuie s respecte un anumit format al datelor introduse. Pentru a realiza acest deziderat, clase de la interfa SWING pun la dispoziia utilizatorului lista derulabil. n cadrul acestei liste, programatorul poate defini date de intrare formatate, astfel nct elimin neajunsul casetelor de editare care permit introducerea de text fr a impune restricii. Alte situaii cer ca utilizatorul s poat observa cu uurin datele de ieire i chiar a datelor de intrare pentru aplicaie. S ne imaginm c utilizatorul trebuie s atepte up-loadul sau descrcarea unui fiier de pe un anumit server. Acesta trebuie s aib n permanen contact vizual cu valoarea procentual a fiierului descrcat, de exemplu. Sau, n alte situaii trebuie s introduc anumite valori i nu dispune dect de un mouse, tastatura fiind indisponibil. Aceste situaii impun folosirea unei bare de tip scal. 3.1. Clasa JComboBox Ca orice component a claselor de interfa SWING, clasa JComboBox se afl n pachetul javax.swing. Aceast clas are ca insta un obiect de tip list derulabil. Aceste tipuri de obiecte 2 permit utilizatorului selectarea unui anumit item dintr-o list de itemi, list care nu apare n totalitate, ci progresiv, pe msur ce utlizatorul o parcurge. n figurile 5.1 i 5.2 sunt prezentate fereastra de proprieti, respectiv fereastra cu tipurile de evenimente pe care le suport instanele acestei clase. Figura 5.1. Fereastra cu proprieti Figura 5.2. Fereastra cu evenimente n continuare vor fi prezentate principalele metode implementate n clasa JComboBox: jComboBox1.setAlignmentX(float aliniere) i jComboBox1.getAlignment() seteaz, respectiv ntoarce, valoarea coordonatei X la care se afl lista derulabil pe form. Valoarea ntoars de metoda getAlignment() este o valoare real; jComboBox1.setAlignmentY(float aliniere) i jComboBox1.getAlignment() au aceleai funcii ca i metodele de aliniere dup coordonata X; jComboBox1.setBackground(Color bg) i jComboBox1.getBackground() seteaz, respectiv ntoarce, culoarea de fond a listei derulabile, aa cum va apare la rularea aplicaiei (culoarea de fond reprezint culoarea din interiorul listei, adic a spaiului n care vor fi afiai itemii); jComboBox1.setEnabled(boolean b) are ca efect activarea sau dezactivarea listei derulabile, n funcie de valoarea pe care o ia argumentul logic b; 3 jComboBox1.setFont(Font font) i jComboBox1.getFont() seteaz, respectiv ntoarce, fontul care se va folosi, respectiv a fost folosit, pentru a afiarea itemilor din lista derulabil; jComboBox1.setForeground(Color fg) i jComboBox1.getForeground() seteaz, respectiv ntoarce, culoarea textului care este, respectiv va fi, folosit la afiarea itemilor din lista derulabil; jComboBox1.setLocation(int x, int y) i jComboBox1.getLocation() seteaz, respectiv ntoarce, valorile coordonatelor x i y la care se va poziiona, respectiv la care se afl poziionat, colul stnga sus al listei derulabile; jComboBox1.setVisible(boolean aflag) are ca efect setarea proprietii de vizibilitate sau invizibilitate a listei derulabile, n funcie de valoarea pe care o ia argumentul aflag. Dac metoda setEnabled(boolean b) avea ca efect inaccesibilitatea listei pentru utilizator, metoda setVisible(boolean true) va avea ca efect tergerea logic a acesteia de pe form. Altfel spus, aceast metod va ascunde lista derulabil respectiv, astfel nct utilizatorul nu o mai poate vedea pe form pn cnd acesta nu este fcut vizibil din alt metod sau clas; jComboBox1.setEditable(boolean b) are ca efect setarea sau desetarea proprietii de editare a listei. Altfel spus, atunci cnd valoarea parametrului b este true, utilizatorul poate introduce un anumit text n list, n caz contrar acesta neavnd drept de modificare a textului din aceasta. Altfel spus, dac valoarea parametrului b este false utilizatorul nu va avea drept de modificare asupra itemilor din lista derulabil. Valorile afiate n lista derulabil este bine s fie introduse din fereastra de proprieti prin modificarea parametrilor itemx (x reprezint indexul itemului respectiv) din proprietatea model. Dac se apas pe butonul aferent acestei proprieti, va apare o caset de dialog n care programatorul poate introduce valorile dorite, tergerea anumitor valori, precum i selecia unei anumite poziii n list pentru o nou valoare adugat sau tears. De asemenea, prin setarea unei anumite valori pentru proprietatea maximumRowCount programatorul va specifica aplicaiei cte linii s afieze atunci cnd lista derulabil este selectat de ctre utilizator. Prin intermediul proprietii selectedIndex programatorul poate specifica ca itemul cu indexul specificat s apar implicit la iniializarea listei. Acelai lucru se poate specifica i prin selectarea unui anumit item cu ajutorul proprietii selectedItem. Un tip de eveniment ce poate fi asociat acestui tip de obiect este evenimentul de tip MouseListner, care are implementate mai multe metode precum: mouseClicked (implementeaz o aciune la efectuarea unui click asupra obiectului), mouseEntered (implementeaz o aciune la poziionarea mouseului n interiorul obiectului), mouseExited (implementeaz o aciune la ieirea mouseului din interiorul obiectului), mouseMoved (implementeaz o aciune la micarea mouseului, indiferent de poziia acestuia n cadrul aplicaiei) i altele. Cel mai important eveniment care se poate asocia obiectului este un eveniment de selecie. Adic, la selectarea unui anumit item din list, s se implementeze o anumit aciune, de exemplu s se asocieze valoarea itemului unei anumite variabile. Aceast aciune se poate implementa ntr-un handler asociat unui eveniment de tip actionPerformed. 3.2. Clasa JProgressBar Instana clasei JProgressBar se numete bar de afiare. Aceasta permite utilizatorului s fie n contact vizual cu valoarea care este desenat n interiorul acestui obiect n permanen. Aa cum a fost menionat mai sus, acest lucru trebuie realizat atunci cnd este vorba despre descrcarea fiierelor de pe un anumit server sau atunci cnd se ateapt o ncrcare de pagin sau atunci cnd este vorba despre o instalare i dorim s fim n permanen informai asupra progresului aciunii respective. n continuare, n figurile 5.3 i 5.4 sunt prezentate fereastra de proprieti, respectiv fereastra cu evenimente. 4 Figura 5.3.a. Fereastra de proprieti Figura 5.3.b. Fereastra de proprieti (cont.) 5 Figura 5.4. Fereastra cu evenimente n continuare vor fi prezentate principalele metode imlementate n clasa JProgressBar: jProgressBar1.setAlignmentX(float aliniere) i jProgressBar1.getAlignment() seteaz, respectiv ntoarce, valoarea coordonatei X la care se afl bara de afiare pe form. Valoarea ntoars de metoda getAlignment() este o valoare real; jProgressBar1.setAlignmentY(float aliniere) i jProgressBar1.getAlignment() au aceleai funcii ca i metodele de aliniere dup coordonata X; jProgressBar1.setBackground(Color bg) i jProgressBar1.getBackground() seteaz, respectiv ntoarce, culoarea de fond a barei, aa cum va apare aceasta la rularea aplicaiei; jProgressBar1.setEnabled(boolean b) are ca efect activarea sau dezactivarea barei de afiare, n funcie de valoarea pe care o ia argumentul logic b; jProgressBar1.setFont(Font font) i jProgressBar1.getFont() seteaz, respectiv ntoarce, fontul care se va folosi, respectiv a fost folosit, pentru a afiarea textului asociat valorii care este afiat pe bara de afiare; jProgressBar1.setForeground(Color fg) i jProgressBar1.getForeground() seteaz, respectiv ntoarce, culoarea textului care este, respectiv va fi, afiat pe bara de afiare, corespunztor valorii curente afiate pe bar; jProgressBar1.setLocation(int x, int y) i jProgressBar1.getLocation() seteaz, respectiv ntoarce, valorile coordonatelor x i y la care se va poziiona, respectiv la care se afl poziionat, colul stnga sus al barei de afiare; jProgressBar1.setString(String text) i jProgressBar1.getText() seteaz, respectiv ntoarce, textul care va fi afiat, respectiv care este afiat, pe bara de afiare, corespunztor valorii curente; jProgressBar1.setStringPainted(boolean b) afieaz sau nu valoarea curent pe bara de afiare. Afiarea, respectiv ascunderea, textului afiat pe bar se realizeaz atunci cnd parametrul b ia valoarea logic true, respectiv false; jProgressBar1.setOrientation(int orientare) i jProgressBar1.getOrientation() seteaz, respectiv ntoarce, orientarea barei de afiare. Parametrii folosii pentru aceast metod sunt: 0 pentru orientare orizontal i 1 pentru orientare vertical; jProgressBar1.setMaximum(int max) i jProgressBar1.getMaximum() seteaz, respectiv ntoarce, valoarea maxim care se poate desena pe bara de afiare; jProgressBar1.setMinimum(int min) i jProgressBar1.getMinimum() seteaz, respectiv ntoarce, valoarea minim care se poate desena pe bara de afiare; jProgressBar1.setValue(int n) i jProgressBar1.getValue() seteaz, respectiv ntoarce, valoarea curent care se va fia, respectiv care este afiat, pe bara de afiare; jProgressBar1.setVisible(boolean aflag) are ca efect setarea proprietii de vizibilitate sau invizibilitate a barei de afiare, n funcie de valoarea pe care o ia argumentul aflag. Dac metoda setEnabled(boolean b) avea ca efect inaccesibilitatea barei pentru utilizator, metoda setVisible(boolean true) va avea ca efect tergerea logic a acesteia de pe form. Altfel spus, aceast metod va ascunde bara de afiare respectiv, astfel nct utilizatorul nu o mai poate vedea pe form pn cnd acesta nu este fcut vizibil din alt metod sau clas. Acest tip de obiecte prezint o restricie, i anume nu se pot atribui alte valori dect ntregi. Aadar, programatorul nu poate folosi pentru afiare dect valori ntregi. Fiind folosit, ca i n cazul etichetei, ca obiect de afiare a unei informaii pentru utilizator, acest obiect nu ar trebui s aib asociat niciun eveniment. n cazul n care aplicaia solicit ca s se implementeze o anumit aciune la apariia unui eveniment asociat obiectului, atunci va trebui implementat o anumit rutin care s trateze apariia respectivului eveniment. 6 3.3. Clasa JSlider Instana clasei JSlider este o bar de tip scal, care poate fi fie folosit pentru introducerea anumitor valori de ctre utilizator, fie pentru afiarea anumitor valori pentru acesta, fie att pentru introducere, ct i pentru afiare. Acest obiect are ca proprietate fundamental faptul c poate fi modificat starea acestuia de ctre utilizator printr-un click. Pe aceast bar se pot desena diviziuni n funcie de dorina utilizatorului, precum i afiarea anumitor valori asociate acestor diviziuni. Diviziunile sunt de dou tipuri: minorTickSpacing i majorTickSpacing. Astfel se obine o divizare a intervalului dat de valorile minim i maxim, care, de asemenea, pot fi introduse de ctre programator. n continuare, vor fi prezentate ferestrele cu proprieti i evenimente ale unei instane a clasei JSlider (figura 4.5 i 4.6). Figura 5.5.a. Fereastra de proprieti Figura 5.5.b. Fereastra de proprieti (cont.) 7 Figura 5.6. Fereastra cu evenimente n continuare vor fi prezentate principalele metode implementate n clasa JSlider: jSlider1.setAlignmentX(float aliniere) i jSlider1.getAlignment() seteaz, respectiv ntoarce, valoarea coordonatei X pe care se afl bara de tip scal pe form. Valoarea ntoars de metoda getAlignment() este o valoare real; jSlider1.setAlignmentY(float aliniere) i jSlider1.getAlignment() au aceleai funcii ca i metodele de aliniere dup coordonata X; jSlider1.setBackground(Color bg) i jSlider1.getBackground() seteaz, respectiv ntoarce, culoarea de fond a barei de tip scal, aa cum va aprea la rularea aplicaiei; jSlider1.setEnabled(boolean b) are ca efect activarea sau dezactivarea barei, n funcie de valoarea pe care o ia argumentul logic b; jSlider1.setFont(Font font) i jSlider1.getFont() seteaz, respectiv ntoarce, fontul care se va folosi, respectiv a fost folosit, pentru a fi afiat textul care nsoete diviziunile desenate pe bar; jSlider1.setForeground(Color fg) i jSlider1.getForeground() seteaz, respectiv ntoarce, culoarea textului care este, respectiv va fi afiat, n dreptul diviziunilor desenate pe bar; jSlider1.setLocation(int x, int y) i jSlider1.getLocation() seteaz, respectiv ntoarce, valorile coordonatelor x i y la care se va poziiona, respectiv la care se afl poziionat, colul stnga sus al barei de tip scal; jSlider1.setMaximum(int max) i jSlider1.getMaximum() seteaz, respectiv ntoarce, valoarea maxim care va fi, respectiv care este, desenat pe bar; jSlider1.setMinimum(int min) i jSlider1.getMinimum() seteaz, respectiv ntoarce, valoarea minim care va fi, respectiv care este, desenat pe bar; jSlider1.setMajorTickSpacing(int Mtick) i jSlider1.getMajorTickSpacing() seteaz, respectiv ntoarce, distana la care se vor desena pe bar diviziunile mari; jSlider1.setMinorTickSpacing(int mtick) i jSlider1.getMinorTickSpacing() seteaz, respectiv ntoarce, distana la care se vor desena pe bar diviziunile mici; jSlider1.setOrientation(int orientare) i jSlider1.getOrientation() seteaz, respectiv ntoarce, orientarea barei de tip scal. Dac valoarea parametrului orientare este 0, atunci bara va fi desenat orizontal, iar dac este 1, atunci bara va fi desenat vertical; 8 jSlider1.setPaintLabels(boolean b) i jSlider1.getPaintLabels() seteaz, respectiv ntoarce, dac etichetele diviziunilor sunt, respectiv au fost, sau nu afiate; jSlider1.setPaintTicks(boolean b) i jSlider1.getPaintTicks() seteaz, respectiv ntoarce, dac diviziunile sunt, respectiv au fost, desenate; jSlider1.setValue(int n) i jSlider1.getValue() seteaz, respectiv ntoarce, valoarea curent care va fi, respectiv care este, afiat pe bara de tip scal; jSlider1.setVisible(boolean aflag) are ca efect setarea proprietii de vizibilitate sau de invizibilitate a barei, n funcie de valoarea pe care o ia argumentul aflag. Dac metoda setEnabled(boolean b) avea ca efect inaccesibilitatea obiectului pentru utilizator, metoda setVisible(boolean true) va avea ca efect tergerea logic a acestuia de pe form. Altfel spus, aceast metod va ascunde obiectul respectiv, astfel nct utilizatorul nu l mai poate vedea pe form pn cnd acesta nu este fcut vizibil din alt metod sau clas. Ca i n cazul clasei JProgressBar, clasa JSlider prezint restricia conform creia nu se pot folosi dect variabile de tip ntreg. n cazul n care este necesar lucrul cu valori reale, se va folosi o conversie a valorii respective n procente. Acest lucru se poate realiza numai n cazul n care plaja de valori cu care se lucreaz este cunoscut. Dac nu, se vor afia valori rotunjite, valorile folosite fiind transformate din tipul de date real n tipul de date ntreg. Acestui tip de obiect i se pot asocia mai multe tipuri de evenimente, i anume: realizarea unui click pe obiect (mouseClicked), poziionarea mouseului deasupra obiectului (mouseEntered), poziionarea mouseului n afara obiectului (mouseExited), schimbarea poziiei mouseului (mouseMoved), realizarea unui click prelungit (n timpul cruia realizm schimbarea valorii) pe obiect (mousePressed), eliberarea mouseului dup realizarea unui click prelungit (mouseReleased), acionarea rotiei mouseului (mouseWheelMoved) i altele. n general, este indicat s se foloseasc evenimentul de tip mouseReleased. 4. Desfurarea lucrrii Prima aplicaie presupune continuarea construirii aplicaiei de la lucrarea precedent astfel: n locul casetei de editare asociat etichetei data naterii se vor plasa trei obiecte de tip list derulabil, unul pentru dat, unul pentru lun i unul pentru anul naterii. Se definesc aceleai restricii ca la aplicaia formula din lucrarea de laborator precedent, cu observaiile c cele trei liste derulabile se vor activa concomitent, trecerea la urmtorul cmp realizndu-se numai n momentul n care a fost selectat anul naterii. Programul care realizeaz acest formular este asemntor cu cel de la lucrarea de laborator precedent, n continuare fiind prezentate numai funciile care prezint modificri i funciile aprute n urma modificrii menionate mai sus: ..................... public formaformular() { initComponents(); jTextField2.setEnabled(false); jTextField3.setEnabled(false); jTextField3.setEnabled(false); jTextField4.setEnabled(false); jTextField6.setEnabled(false); jTextField7.setEnabled(false); jTextArea1.setVisible(false); jRadioButton1.setEnabled(false); jRadioButton2.setEnabled(false); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jButton1.setEnabled(false); jButton3.setEnabled(false); 9 jComboBox1.setEnabled(false); jComboBox2.setEnabled(false); jComboBox3.setEnabled(false); } ............................................. private void inregnoua(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jTextField1.setEnabled(true); jTextField1.setText(""); jTextField2.setEnabled(false); jTextField2.setText(""); jTextField3.setEnabled(false); jTextField3.setText(""); jTextField4.setEnabled(false); jTextField4.setText(""); jTextField6.setEnabled(false); jTextField6.setText(""); jTextField7.setEnabled(false); jTextField7.setText(""); jTextArea1.setVisible(false); jRadioButton1.setEnabled(false); jRadioButton1.setSelected(false); jRadioButton2.setEnabled(false); jRadioButton2.setSelected(false); jCheckBox1.setEnabled(false); jCheckBox1.setSelected(false); jCheckBox2.setEnabled(false); jCheckBox2.setSelected(false); jComboBox1.setEnabled(false); jComboBox2.setEnabled(false); jComboBox3.setEnabled(false); jComboBox1.setSelectedIndex(0); jComboBox2.setSelectedIndex(0); jComboBox3.setSelectedIndex(0); jButton1.setEnabled(false); jButton3.setEnabled(false); } private void sel1(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jTextField6.setEnabled(true); } private void cancel(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jTextField1.setEnabled(true); jTextField1.setText(""); jTextField2.setEnabled(false); jTextField2.setText(""); jTextField3.setEnabled(false); jTextField3.setText(""); jTextField4.setEnabled(false); jTextField4.setText(""); jTextField6.setEnabled(false); jTextField6.setText(""); jTextField7.setEnabled(false); jTextField7.setText(""); jTextArea1.setVisible(false); jRadioButton1.setEnabled(false); jRadioButton1.setSelected(false); jRadioButton2.setEnabled(false); jRadioButton2.setSelected(false); jCheckBox1.setEnabled(false); jCheckBox1.setSelected(false); 10 jCheckBox2.setEnabled(false); jCheckBox2.setSelected(false); jComboBox1.setEnabled(false); jComboBox2.setEnabled(false); jComboBox3.setEnabled(false); jComboBox1.setSelectedIndex(1); jComboBox2.setSelectedIndex(1); jComboBox3.setSelectedIndex(1); jButton1.setEnabled(false); jButton3.setEnabled(false); } private void next(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jTextField1.setEnabled(false); jTextField2.setEnabled(false); jTextField3.setEnabled(false); jTextField4.setEnabled(false); jTextField6.setEnabled(false); jTextField7.setEnabled(false); jTextArea1.setVisible(true); jRadioButton1.setEnabled(false); jRadioButton2.setEnabled(false); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jButton1.setEnabled(false); jComboBox1.setEnabled(false); jComboBox2.setEnabled(false); jComboBox3.setEnabled(false); jTextArea1.setText(jTextArea1.getText() + "Nume: " + jTextField1.getText() + "\nPrenume: " + jTextField2.getText() + "\nAdresa: " +jTextField3.getText() +"\n\t" +jTextField4.getText() +"\nData nasterii: " + jComboBox1.getSelectedItem() + " " + jComboBox2.getSelectedItem() + " " + jComboBox3.getSelectedItem() + "\nLocaliatea: " +jTextField6.getText() +"\nJ udetul: " +jTextField7.getText() + "\nSex: " +sex +"\n Inregistrarea a fost efectuata cu succes!\n\n"); jButton3.setEnabled(true); } private void click8(java.awt.event.MouseEvent evt) { // TODO add your handling code here: jCheckBox2.setEnabled(false); jButton1.setEnabled(true); } private void click7(java.awt.event.MouseEvent evt) { // TODO add your handling code here: sex="feminin"; jRadioButton1.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); } private void click6(java.awt.event.MouseEvent evt) { // TODO add your handling code here: sex="masculin"; jRadioButton2.setEnabled(false); jCheckBox1.setEnabled(true); jCheckBox2.setEnabled(true); } private void click5(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if(jTextField6.getText()!=""){ jTextField7.setEnabled(true); } } 11 n continuare vor fi prezentate ferestrele aplicaiei la iniializare i dup apsarea butonului Next>: Figura 5.7. Fereastra aplicaiei la iniializare Figura 5.8. Fereastra aplicaiei dup apsarea butonului Next> Dac n figura 5.8. se apas butonul nregistrare nou, se va reveni la fereastra din figura 5.7. n continuare, se dorete construirea unei aplicaii care are ca scop incrementarea unui contor, folosind ca valoare iniial valoarea stabilit cu ajutorul unui obiect de tip bar de tip scal, afiarea realizndu-se cu ajutorul unui obiect de tip bar de afiare. Incrementarea, respectiv decrementarea, contorului se va realiza prin intermediul a dou butoane, Inc i Dec. Bara de tip scal va fi disponibil permanent, valoarea afiat pe ea urmrind valoarea curent a contorului. Contorul nu va putea lua dect valori n intervalul 0 100. Valoarea contorului iniial este dat de valoarea iniial a barei de tip scal, adic 0. La modificarea acestei valori, prin mutarea cursorului la o alt valoare, vor deveni accesibile butoanele de incrementare i decrementare, iar valoarea care va fi preluat din bara de tip scal va fi afiat pe bara de afiare. La apsarea unuia dintre butoane se va incrementa sau decrementa contorul, valoarea respectiv fiind afiat att pe bara de afiare, ct i pe bara de tip scal. Valoarea contorului se poate modifica pe parcursul execuiei n funcie de modificarea cursorului pe bara de tip scal. 12 Programul care realizeaz aceast aplicaie este prezentat n cele ce urmeaz: package forma; /* * forma.java * * Created on 29 octombrie 2006, 16:16 */ /** * * @author Administrator */ public class forma extends javax.swing.JFrame { /** Creates new form forma */ public forma() { initComponents(); jProgressBar1.setValue(0); jProgressBar1.setEnabled(false); jSlider1.setValue(0); jButton1.setEnabled(false); jButton2.setEnabled(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { ........................................... }// </editor-fold> private void Dec(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jProgressBar1.setValue(jProgressBar1.getValue() - 1); jProgressBar1.setString(java.lang.String.valueOf(jProgressBar1.getValue())); jSlider1.setValue(jProgressBar1.getValue()); jButton1.setEnabled(true); if(jProgressBar1.getValue()==0) jButton2.setEnabled(false); } private void Inc(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jProgressBar1.setValue(jProgressBar1.getValue() +1); jProgressBar1.setString(java.lang.String.valueOf(jProgressBar1.getValue())); jSlider1.setValue(jProgressBar1.getValue()); jButton2.setEnabled(true); if(jProgressBar1.getValue()==100) jButton1.setEnabled(false); } private void slider(java.awt.event.MouseEvent evt) { // TODO add your handling code here: jProgressBar1.setValue(jSlider1.getValue()); jProgressBar1.setString(java.lang.String.valueOf(jSlider1.getValue())); jButton1.setEnabled(true); jButton2.setEnabled(true); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { 13 new forma().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.J Button jButton1; private javax.swing.J Button jButton2; private javax.swing.JProgressBar jProgressBar1; private javax.swing.J Slider jSlider1; // End of variables declaration } n continuare se prezint ferestrele aplicaiei n timpul rulrii: Figura 5.9. Fereastra aplicaiei la iniializare Figura 5.10. Fereastra aplicaiei dup modificarea poziiei cursorului barei de tip scal 14 Figura 5.11. Fereastra aplicaiei n timpul acionrii butoanelor