Interfete Grafice
Pana acum, o parte dintre aplicatiile scrise produceau linii de text succesive, defiland pe ecran. Cu alte cuvinte, ecranul era folosit in mod text. In acest regim, ecranul este considerat ca o matrice de caractere.
Un asemenea stil de comunicare s-a demodat, fiind inlocuit de mult mai modernul dialog prin interfete grafice sau GUI (Graphical User Interface) care a putut sa se impuna gratie progresului realizat in domeniul productiei de monitoare. Utilizarea ecranului in mod grafic presupune tratarea lui ca o matrice de puncte (pixeli) pe care desenam imagini sau text. Am avut si aplicatii care utilizau clasa JOptionPane.
O interfata grafica contine elemente de control (sau widgets = window gadgets) care pot fi activate de utilizator cu ajutorul mouse-ului sau al tastaturii. Activarea unui element de control determina un anumit raspuns din partea programului, raspuns concretizat prin executia unei anumite operatii.
Cele mai raspandite interfete grafice sunt cele bazate pe ferestre. Principiul de lucru al unei asemenea interfete presupune ca fiecarei aplicatii active la un moment dat sa i se aloce o zona dreptunghiulara pe ecran, numita fereastra. In interiorul ferestrei respective se vor gasi toate elementele de control necesare dialogului utilizator - aplicatie, precum si informatiile afisate de aplicatie.
Se poate spune astfel ca, daca sistemul de operare folosit permite executia concurenta a mai multor aplicatii, prezenta ferestrelor aplicatiilor creeaza impresia ca ecranul este transparent in raport cu memoria (e ca o fereastra spre memorie). Utilizatorul capata o vedere de ansamblu asupra a ceea ce se intampla in \'capul\' calculatorului, disparand senzatia ca se lucreaza cu o cutie neagra.
Pentru ca o aplicatie care foloseste interfata grafica sa poata functiona, este necesara existenta unei platforme sau server grafic (numit server X in cazul sistemelor de operare Unix, respectiv MS Windows pentru sistemul Windows) care sa determine intrarea monitorului in regim grafic si care sa ofere functiile primitive necesare, intre altele, pentru desenarea componentelor GUI si pentru receptarea semnalelor generate de mouse si tastatura.
Programarea aplicatiilor cu interfete grafice ar fi insa o corvoada daca ne-am baza doar pe primitivele oferite de serverul grafic: ar fi cam ceea ce este un limbaj de asamblare pe langa un limbaj de nivel inalt.
De aceea, in sprijinul programatorilor au fost create o serie de suporturi software care permit ca o aplicatie grafica sa poata fi construita din \'piese\' standardizate, gata \'fabricate\'. In felul acesta, programatorul este liber sa se concentreze mai mult asupra logicii aplicatiei propriu-zise, munca lui constand in principal in a asocia elementelor de control ale interfetei diferite functiuni si in a scrie codul ce realizeaza acele functiuni.
Intre suporturile software de care vorbeam mai inainte se afla:
* o biblioteca de \'widgets\' (bare de defilare, chenare, butoane etc); aceasta biblioteca elibereaza programatorul de sarcina de a desena si a colora de fiecare data toate elementele GUI ce participa la o aplicatie.
* un manager de ferestre: acesta este cel care imprima \'look & feel\'-ul unei interfete grafice, cu alte cuvinte cum \'arata la fata\' elementele GUI. Managerul de ferestre este cel care dicteaza modul in care este asamblata si echipata o fereastra, precum si modul in care va fi manipulata (de ex. el stabileste ca o fereastra are in coltul din dreapta sus 3 butoane cu rol de minimizare, maximizare/restaurare si respectiv inchidere si de asemenea, stabileste cum sa arate aceste butoane).
* eventual o biblioteca de functii sau clase predefinite, atasata mediului de programare utilizat la dezvoltarea aplicatiei. Aceasta biblioteca va fi situata \'deasupra\' bibliotecii de widgets si va permite construirea interfetei grafice, pornind de la fereastra aplicatiei, conform standardului impus de managerul de ferestre instalat pe masina pe care ruleaza aplicatia.
Limbajul Java ofera pachetul predefinit java.awt (aBSTRACT wINDOW tOOLKIT), impreuna cu o serie de subpachete ale acestuia, care incorporeaza clasele necesare pentru a construi aplicatii grafice. Incepand cu Java 2, apar noi functii in pachetul javax.swing.
In acest material ne propunem sa prezentam modul in care, cu ajutorul claselor din pachetele java.awt si javax.swing, se construieste o fereastra a unei aplicatii grafice, cum se afiseaza informatia in fereastra si cum se pot adauga cateva elemente de control familiare cum ar fi: butoane, linii de editare si etichete.
Unei aplicatii grafice ii corespunde o fereastra principala (frame) si, dupa caz, una sau mai multe ferestre subordonate celei principale.
Clasa javax.swing.JFrame este cea care contine elementele de baza necesare construirii ferestrei principale. Mai concret, clasa JFrame \'stie\' sa deseneze pe ecran o fereastra ale carei dimensiuni initiale implicite sunt 0 x 0 si a carei pozitie initiala implicita este coltul din stanga sus al ecranului. Deducem de aici ca respectiva fereastra este cam greu vizibila. Pentru a o putea vedea va trebui sa-i stabilim niste dimensiuni mai rezonabile. De asemenea, putem sa indicam si amplasarea pe ecran, daca nu ne multumeste cea implicita.
In secventa de mai jos se creaza si se afiseaza o fereastra principala: