1. Obiectivele lucrrii nsuirea noiunilor de baz referitoare la componentele SWING; nsuirea noiunilor de baz referitoare la clasele J TextField, J CheckBox, J RadioButton; nsuirea caracteristicilor particulare ale fiecrei clase n parte; Construirea unei interfee cu utilizatorul care are ca obiectiv incrementarea i decrementarea unui contor cu preluarea valorii iniiale din caseta de editare, precum i un formular de creare a unei casue de e-mail. 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 n lucrarea de laborator 3, au fost prezentate trei componente ale claselor de interfa SWING. Pe parcursul prezentei lucrri vor fi prezentate alte trei componente, i anume: JTextField, JCheckBox i JRadioButton. 3.1. Clasa JTextField Ca orice component a claselor de interfa SWING, clasa JTextField se afl n pachetul javax.swing. Aceast clas are ca insta un obiect de tip caset de editare. Are aceeai structur vizual cu cea a etichetelor, diferena constnd n faptul c casetele de editare permit i introducerea de date. Altfel spus, dac obiectelor de tip etichet nu li se poate modifica valoarea dect prin linie de cod, obiectelor de tip caset de editare li se poate modifica valoarea la orice moment de timp al rulrii aplicaiei direct de utilizator, prin introducerea noii valori. Aceast tip de obiect este necesar deoarece anumite tipuri de aplicaii solicit utilizatorului introducerea anumitor valori de iniializare. n figurile 4.1 i 4.2 sunt prezentate ferestreastra de proprieti, respectiv fereastra cu tipurile de evenimente pe care le suport instanele acestei clase. 2 Figura 4.1. Fereastra cu proprieti Figura 4.2. Fereastra cu evenimente n continuare vor fi prezentate principalele metode implementate n clasa JTextField: jTextField1.setAlignmentX(float aliniere) i jTextField1.getAlignment() seteaz, respectiv ntoarce, valoarea coordonatei X pe care se afl caseta de editare pe form. Valoarea ntoars de metoda getAlignment() este o valoare real; jTextField1.setAlignmentY(float aliniere) i jTextField1.getAlignment() au aceleai funcii ca i metodele de aliniere dup coordonata X; jTextField1.setBackground(Color bg) i jTextField1.getBackground() seteaz, respectiv ntoarce, culoarea de fond a casetei de editare, aa cum va apare caseta la rularea aplicaiei; jTextField1.setEnabled(boolean b) are ca efect activarea sau dezactivarea casetei de editare, n funcie de valoarea pe care o ia argumentul logic b; jTextField1.setFont(Font font) i jTextField1.getFont() seteaz, respectiv ntoarce, fontul care se va folosi, respectiv a fost folosit, pentru a afiarea textului din caseta de editare; jTextField1.setForeground(Color fg) i jTextField1.getForeground() seteaz, respectiv ntoarce, culoarea textului care este, respectiv va fi, afiat n caseta de editare; 3 jTextField1.setLocation(int x, int y) i jTextField1.getLocation() seteaz, respectiv ntoarce, valorile coordonatelor x i y la care se va poziiona, respectiv la care se afl poziionat, colul stnga sus al casetei de editare; jTextField1.setText(String text) i jTextField1.getText() seteaz, respectiv ntoarce, textul care va fi afiat, respectiv care este afiat, n caseta de editare; jTextField1.setVisible(boolean aflag) are ca efect setarea proprietii de vizibilitate sau invizibilitate a casetei de editare, n funcie de valoarea pe care o ia argumentul aflag. Dac metoda setEnabled(boolean b) avea ca efect inaccesibilitatea casetei de editare pentru utilizator, metoda setVisible(boolean true) va avea ca efect tergerea logic a acesteia de pe form. Altfel spus, aceast metod va ascunde caseta de editare respectiv, astfel nct utilizatorul nu o mai poate vedea pe form pn cnd acesta nu este fcut vizibil din alt metod sau clas; jTextField1.setEditable(boolean b) are ca efect setarea sau desetarea proprietii de editare a casetei. Altfel spus, atunci cnd valoarea parametrului b este true, atunci utilizatorul poate introduce un anumit text n caset, n caz contrar acesta neavnd drept de modificare a textului din caset. Altfel spus, dac valoarea parametrului b este false, caseta de editare se va comporta ca i un obiect de tip etichet. 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 n interiorul casetei de editare), mouseEntered (implementeaz o aciune la poziionarea mouseului n interiorul casetei de editare), mouseExited (implementeaz o aciune la ieirea mouseului din interiorul casetei de editare), mouseMoved (implementeaz o aciune la micarea mouseului, indiferent de poziia acestuia n cadrul aplicaiei) i altele. O clas asemntoare cu clasa JTextField este clasa JTextFieldArea, a crei instan este o caseta de editare care permite introducerea mai multor linii de text. 3.2. Clasa JCheckBox Instana clasei JCheckBox se numete caset de selecie. Aceasta permite utilizatorului numai selecia sa prin efectuarea unui click. Starea ei implicit este ntotdeauna desetat, dar aceast proprietate poate fi modificat de programator. Este indicat, ns, ca aceast caset de selecie s fie desetat, setarea ei urmnd a fi efectuat de utilizator. n continuare, n figurile 4.3 i 4.4 sunt prezentate fereastra de proprieti, respectiv fereastra cu evenimente. Figura 4.3. Fereastra de proprieti Figura 4.4 Fereastra cu evenimente 4 n continuare vor fi prezentate principalele metode imlementate n clasa JCheckBox: jCheckBox1.setAlignmentX(float aliniere) i jCheckBox1.getAlignment() seteaz, respectiv ntoarce, valoarea coordonatei X pe care se afl caseta de selecie pe form. Valoarea ntoars de metoda getAlignment() este o valoare real; jCheckBox1.setAlignmentY(float aliniere) i jCheckBox1.getAlignment() au aceleai funcii ca i metodele de aliniere dup coordonata X; jCheckBox1.setBackground(Color bg) i jCheckBox1.getBackground() seteaz, respectiv ntoarce, culoarea de fond a casetei de selecie, aa cum va apare caseta la rularea aplicaiei; jCheckBox1.setEnabled(boolean b) are ca efect activarea sau dezactivarea casetei de selecie, n funcie de valoarea pe care o ia argumentul logic b; jCheckBox1.setFont(Font font) i jCheckBox1.getFont() seteaz, respectiv ntoarce, fontul care se va folosi, respectiv a fost folosit, pentru a afiarea textului asociat casetei de selecie; jCheckBox1.setForeground(Color fg) i jCheckBox1.getForeground() seteaz, respectiv ntoarce, culoarea textului care este, respectiv va fi, afiat n caseta de selecie; jCheckBox1.setLocation(int x, int y) i jCheckBox1.getLocation() seteaz, respectiv ntoarce, valorile coordonatelor x i y la care se va poziiona, respectiv la care se afl poziionat, colul stnga sus al casetei de selecie; jCheckBox1.setText(String text) i jCheckBox1.getText() seteaz, respectiv ntoarce, textul care va fi afiat, respectiv care este afiat, n caseta de selecie; jCheckBox1.setVisible(boolean aflag) are ca efect setarea proprietii de vizibilitate sau invizibilitate a casetei de selecie, n funcie de valoarea pe care o ia argumentul aflag. Dac metoda setEnabled(boolean b) avea ca efect inaccesibilitatea casetei de selecie pentru utilizator, metoda setVisible(boolean true) va avea ca efect tergerea logic a acesteia de pe form. Altfel spus, aceast metod va ascunde caseta de selecdie respectiv, astfel nct utilizatorul nu o mai poate vedea pe form pn cnd acesta nu este fcut vizibil din alt metod sau clas. Evenimentul cel mai important al acestui obiect este, ca i n cazul obiectului de tip buton, evenimentul de apsare. Aadar, se va implementa o aciune la executarea unui click pe caseta de selecie, aceasta schimbndu-i starea din desetat n setat, lucru care este posibil prin adugarea unui handler asociat evenimentului actionPerformed. Se mai poate implementa aceeai aciune i prin asocierea ei evenimentului mouseClicked, adic la efectuarea unui click pe obiect. 3.3. Clasa JRadioButton Instana clasei JRadioButton este un radio buton, care poate fi fie selectat, fie neselectat. Acest are ca proprietate fundamental faptul c poate fi modificat starea acestuia de ctre utilizator printr-un click. Un astfel de buton poate fi inscipionat cu un anumit text i poate lua dou valori logice: true selectat sau apsat i false neselectat sau neapsat. Acest tip de buton, ca i caseta de selecie, se folosete atunci cnd aplicaia ateapt ca utilizatorul s seteze acest obiect. Spre exemplu, s ne imaginm o aplicaie care nu poate trece la un alt pas pn cnd utilizatorul nu a selectat acest tip de buton. Aceast selecie poate surveni, de exemplu, pentru luarea la cunotin a implicaiilor folosirii frauduloase a aplicaiei. n continuare, vor fi prezentate ferestrele cu proprieti i evenimente ale unei instane a clasei JRadioButton (figura 4.5 i 4.6). 5 Figura 4.5. Fereastra cu proprieti Figura 4.6. Fereastra cu evenimente n continuare vor fi prezentate principalele metode implementate n clasa jRadioButton: jRadioButton1.setAlignmentX(float aliniere) i jRadioButton1.getAlignment() seteaz, respectiv ntoarce, valoarea coordonatei X pe care se afl radio butonul pe form. Valoarea ntoars de metoda getAlignment() este o valoare real; jRadioButton1.setAlignmentY(float aliniere) i jRadioButton1.getAlignment() au aceleai funcii ca i metodele de aliniere dup coordonata X; jRadioButton1.setBackground(Color bg) i jRadioButton1.getBackground() seteaz, respectiv ntoarce, culoarea de fond a radio butonului, aa cum va aprea la rularea aplicaiei; jRAdioButton1.setEnabled(boolean b) are ca efect activarea sau dezactivarea radio butonului, n funcie de valoarea pe care o ia argumentul logic b; jRadioButton1.setFont(Font font) i jRadioButton1.getFont() seteaz, respectiv ntoarce, fontul care se va folosi, respectiv a fost folosit, pentru a fi afiat textul care nsoete radio butonul; jRadioButton1.setForeground(Color fg) i jRadioButton1.getForeground() seteaz, respectiv ntoarce, culoarea textului care este, respectiv va fi afiat, n radio buton; 6 jRadioButton1.setLocation(int x, int y) i jRadioButton1.getLocation() seteaz, respectiv ntoarce, valorile coordonatelor x i y la care se va poziiona, respectiv la care se afl poziionat, colul stnga sus al radio butonului; jRadioButton1.setText(String text) i jRadioButton1.getText() seteaz, respectiv ntoarce, textul care va fi afiat, respectiv care este afiat, n radio buton; jRadioButton1.setVisible(boolean aflag) are ca efect setarea proprietii de vizibilitate sau de invizibilitate a radio butonului, 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. n cazul clasei JRadioButton putem asocia diverse evenimente ca i la clasa JCheckBox. 4. Desfurarea lucrrii Prima aplicaie presspune continuarea construirii aplicaiei de la lucrarea precedent astfel: se va mai aduga un buton, care va conine textul Validare, precum i i se va asocia handlerul validare; un obiect de tip caset de editare (JTextField), care nu va prezenta niciun text la iniializare i care are asociat un eveniment de tip mouseExited. Se dorete ca la iniializarea aplicaiei s poat fi accesate de ctre utilizator numai butonul de validare i caseta de editare, iar dup validarea valorii de iniializare, aceasta s fie afiat n etichet, urmnd ca midificarea ei s fie fcut cu ajutorul butoanelor de incrementare i decrementare, iar butonul de validare s nu mai fie vizibil pentru utilizator. Trebuie asigurat i o msur de siguran, n cazul n care utilizatorul dorete reiniializarea contorului. Acest lucru se realizeaz prin implementarea aciunii de reiniializare asociat evenimentului mouseExited, legat de caseta de editare. n continuare se prezint listingul programului care realizeaz aceast aplicaie: package aplicatie1; /* * forma.java * * Created on 23 octombrie 2006, 10:22 */ /** * * @author Administrator */ public class forma extends javax.swing.JFrame { //Zona de declarare a variabilelor globale private int i; /** Creates new form forma */ public forma() { initComponents(); //Afisare sir vid in eticheta si caseta de editare jLabel1.setText(""); jTextField1.setText(""); jTextField1.setSize(5,10); //se seteaza dimensiunea obiectului //Dezactivarea butoanelor de incrementare si decrementare 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 7 * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { ......................................................................................... }// </editor-fold> private void validare(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //functie de conversie a unui sir de caractere intr-o valoare numerica in baza 10 i=java.lang.Integer.valueOf(jTextField1.getText(),10); //functie de conversie a unei valori numerice intr-un sir de caractere jLabel1.setText(java.lang.String.valueOf(i)); //Stergere de pe forma a butonului validare jButton3.setVisible(false); //Activare butoane de incrementare si decrementare jButton1.setEnabled(true); jButton2.setEnabled(true); jTextField1.setText(""); } //functia care implementeaza o actiune in urma realizarii evenimentului mouseExited private void mouse(java.awt.event.MouseEvent evt) { // TODO add your handling code here: i=java.lang.Integer.valueOf(jTextField1.getText(),10); jLabel1.setText(jTextField1.getText()); } private void Dec(java.awt.event.ActionEvent evt) { // TODO add your handling code here: i--; jLabel1.setText(java.lang.String.valueOf(i)); } private void Inc(java.awt.event.ActionEvent evt) { // TODO add your handling code here: i++; jLabel1.setText(java.lang.String.valueOf(i)); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new forma().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.J Button jButton1; private javax.swing.J Button jButton2; private javax.swing.J Button jButton3; private javax.swing.JLabel jLabel1; private javax.swing.J TextField jTextField1; // End of variables declaration } Ferestrele aplicaiei la iniializare, dup validare i dup reiniializare sunt prezentate n continuare: 8 Figura 4.7. Fereastra aplicaiei la iniializare Figura 4.8. Fereastra aplicaiei dup validare Figura 4.9. Fereastra aplicaiei nainte de reiniializare Figura 4.10. Fereastra aplicaiei dup reiniializare Figura 4.11. Fereastra aplicaiei n timpul rulrii 9 n continuare, se dorete construirea unui formular de nscriere. Acest formular trebuie s conin urmtoarele obiecte: 7 obiecte de tip etichet (nume, prenume, adres, data naterii, localiate, jude, sex); 7 obiecte de tip caset de editare asociate etichetelor astfel: pentru nume, prenume, data naterii, localitate i jude cte o caset de editare, iar pentru adres dou casete de editare; dou obiecte de tip radio buton asociate etichetei sex, care vor conine textul masculin, respectiv feminin; dou casete de selecie care vor fi folosite pentru a semnala aplicaiei c utilizatorul a citit condiiile impuse de aplicaie i este, respectiv nu este, de acord cu acestea; dou butoane, Next> i Cancel, care vor fi folosite pentru nregistrare, respectiv pentru resetarea tuturor valorilor; un obiect de tip zon de editare n care se vor afia toate datele introduse de utilizator, precum i mesajul de final: nregistrarea a fost efectua cu succes!. Asupra acestui formular de nscriere vor fi impuse cteva restricii de utilizare, i anume: prima caset de editare este ntotdeauna activ, restul casetelor de editare devenind active numai dup ce utilizatorul a introdus un text n caseta respectiv i a apsat click pe urmtoarea caset de editare, fie a apsat tasta Tab. n continuare, radio butoanele asociate etichetei sex nu vor deveni active dect atunci cnd utlizatorul a completat toate casetele de editare de deasupra lor. Aceste butoane se exclud unul pe altul. Dup selecia sexului, vor deveni active cele dou casete de selecie. Prin efectuarea unui click pe una dintre aceste dou casete, cealalt caseta de selecie va deveni inactiv. Selecia casetei Sunt de acord cu condiiile va avea ca rezultat activarea butonului Next>. Dac este selectat caseta Nu sunt de acord cu condiiile, atunci butonul Next> va rmne inactiv, urmnd ca utilizatorul s poat accesa doar butonul Cancel i s reia procesul de introducere a datelor. Dac butonul Next> este activ, prin apsarea lui toate cmpurile de selecie vor deveni inactive, se va activa zona de editare n care se vor afia toate datele introduse de ctre utilizator, iar la sfrit se va afia mesajul Inregistrarea a fost efectuat cu succes!. Restriciile asupra casetelor de editare, a casetelor de selecie i a radio butoanelor se implementeaz prin handlerele clickx, unde x reprezint numrul de ordine. Ele implementeaz un handler asociat unui eveniment de tip mouseClicked. Celelalte restricii impuse casetelor de editare, activarea urmtorului obiect la apsarea tastei Tab, sunt implementate prin handlerele Tabx, unde x reprezint numrul de ordine al aciunii. Aceste handlere se asociaz unor evenimente de tipul KeyPressed. Listingul complet al programului este prezentat n continuare: package formular; /* * formaformular.java * * Created on 27 octombrie 2006, 09:57 */ import java.awt.event.KeyEvent; /** * * @author Administrator */ public class formaformular extends javax.swing.J Frame { private String sex; /** Creates new form formaformular */ public formaformular() { initComponents(); jTextField2.setEnabled(false); jTextField3.setEnabled(false); jTextField3.setEnabled(false); jTextField4.setEnabled(false); jTextField5.setEnabled(false); jTextField6.setEnabled(false); jTextField7.setEnabled(false); jTextArea1.setVisible(false); jRadioButton1.setEnabled(false); 10 jRadioButton2.setEnabled(false); jCheckBox1.setEnabled(false); jCheckBox2.setEnabled(false); jButton1.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 cancel(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jTextField1.setText(""); jTextField2.setEnabled(false); jTextField2.setText(""); jTextField3.setEnabled(false); jTextField3.setText(""); jTextField4.setEnabled(false); jTextField4.setText(""); jTextField5.setEnabled(false); jTextField5.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); jButton1.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); jTextField5.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); jTextArea1.setText("Nume: " +jTextField1.getText() +"\nPrenume: " +jTextField2.getText() + "\nAdresa: " +jTextField3.getText() +"\n\t" +jTextField4.getText() +"\nData nasterii: " + jTextField5.getText() +"\nLocaliatea: " +jTextField6.getText() +"\nJ udetul: " + jTextField7.getText() +"\nSex: " +sex +"\n Inregistrarea a fost efectuata cu succes!"); } private void click8(java.awt.event.MouseEvent evt) { // TODO add your handling code here: 11 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); } } private void click4(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if(jTextField5.getText()!=""){ jTextField6.setEnabled(true); } } private void click3(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if(jTextField3.getText()!=""){ jTextField5.setEnabled(true); } } private void click2(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if(jTextField2.getText()!=""){ jTextField3.setEnabled(true); jTextField4.setEnabled(true); } } private void tab6(java.awt.event.KeyEvent evt) { // TODO add your handling code here: if((KeyEvent.VK_TAB==9) && (jTextField7.getText()!="")) { jRadioButton1.setEnabled(true); jRadioButton2.setEnabled(true); } } private void tab5(java.awt.event.KeyEvent evt) { // TODO add your handling code here: if((KeyEvent.VK_TAB==9) && (jTextField6.getText()!="")) { jTextField7.setEnabled(true); } } private void tab4(java.awt.event.KeyEvent evt) { // TODO add your handling code here: if((KeyEvent.VK_TAB==9) && (jTextField5.getText()!="")) { jTextField6.setEnabled(true); } } private void tab3(java.awt.event.KeyEvent evt) { 12 // TODO add your handling code here: if((KeyEvent.VK_TAB==9) && (jTextField3.getText()!="")) { jTextField5.setEnabled(true); } } private void tab2(java.awt.event.KeyEvent evt) { // TODO add your handling code here: if((KeyEvent.VK_TAB==9) && (jTextField2.getText()!="")) { jTextField3.setEnabled(true); jTextField4.setEnabled(true); } } private void click1(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if(jTextField1.getText()!=""){ jTextField2.setEnabled(true); } } private void tab1(java.awt.event.KeyEvent evt) { // TODO add your handling code here: if((KeyEvent.VK_TAB==9) && (jTextField1.getText()!="")) { jTextField2.setEnabled(true); } } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new formaformular().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.J Button jButton1; private javax.swing.J Button jButton2; private javax.swing.J CheckBox jCheckBox1; private javax.swing.J CheckBox jCheckBox2; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.J RadioButton jRadioButton1; private javax.swing.J RadioButton jRadioButton2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; private javax.swing.J TextField jTextField1; private javax.swing.J TextField jTextField2; private javax.swing.J TextField jTextField3; private javax.swing.J TextField jTextField4; private javax.swing.J TextField jTextField5; private javax.swing.J TextField jTextField6; private javax.swing.J TextField jTextField7; // End of variables declaration } 13 n continuare este prezentat fereastra aplicaiei n diverse momente ale rulrii i diferite situaii: Figura 4.12 Fereastra aplicaiei la lansarea n execuie Figura 4.13 Fereastra aplicaiei nainte de apsarea butonului Next> Figura 4.14 Fereastra aplicaiei dup apsarea butonului Next> Figura 4.15 fereastra aplicaiei n timpul completrii cmpurilor 14 Figura 4.16 Fereastra aplicaiei dup apsarea butonului Cancel Pentru construirea fiierului executabil .jar se va alege din meniul Build opiunea Build Main Project. n consola de ieire va fi indicat calea ctre acest fiier, care poate fi rulat indiferent de platform, singura restricie fiind aceea ca platforma trebuie s aib instalat maina virtual jre (J ava Runtime Environment).