Principii de construcție a interfeței grafice utilizator
În capitolele anterioare am scris un program legat de un terminal de text și a alerga de la linia de comandă. Astfel de programe sunt numite aplicații consolă. Acestea sunt concepute pentru a rula pe server, în cazul în care nu este necesar să comunicarea interactivă cu utilizatorul.
Programul lucrează în strânsă colaborare cu clientul, de a primi semnale de la tastatură și mouse-ul, care lucrează într-un mediu grafic. Fiecare aplicație este proiectat pentru a lucra într-un mediu grafic, trebuie să creați cel puțin o fereastră în care lucrarea lui va avea loc, și înregistrați-l într-un înveliș sistem de operare grafic, astfel încât fereastra ar putea interacționa cu sistemul de operare și alte ferestre: se suprapun, muta, redimensiona , ori în etichetă.
De-a lungul deceniilor, dezvoltarea tehnologiei de calculator a creat o mulțime de diferite sisteme grafice: MS Windows, X Window System, Macintosh. În fiecare dintre ele regulile de construcție a ferestrelor și a componentelor acestora: un meniu, câmpuri de intrare, butoane, liste, bare de defilare. Aceste reguli sunt complexe și confuze. Grafic API, pentru a crea interfața cu utilizatorul, conține sute de funcții.
Pentru a facilita crearea de ferestre și componentele acestora sunt scrise funcții de bibliotecă și clase: MFC, Motif, OpenLook, Qt, Tk, Xview, OpenWindows, OpenGL, GTK + și mnozhe-
Rafalelor altele. Fiecare clasă descrie o bibliotecă dată o componentă grafică, metoda se ocupă de acest lucru și alte clase.
În cazul tehnologiei Java este complicată de faptul că aplicația Java ar trebui să funcționeze în orice, sau cel puțin în multe medii grafice. Avem nevoie de o bibliotecă de clasă, care este independent de sistemul grafic special.
În prima versiune problema JDK a fost rezolvată după cum urmează: au fost dezvoltate metode de interfață care cuprinde de obiecte grafice. Clase Java bibliotecă grafică a pune în aplicare aceste interfețe pentru a crea aplicații. metode de aplicare a acestor interfețe Java sunt folosite pentru introducerea și mutarea obiectelor grafice schimba dimensiunile lor, obiecta interacțiune unele cu altele.
Pe de altă parte, pentru a lucra cu ecran într-un mediu grafic special, aceste interfețe sunt puse în aplicare în orice tip de mediu separat. Fiecare GUI se face în felul său, prin intermediul shell cu ajutorul bibliotecilor grafice ale sistemului de operare.
Partea a III. Crearea unui GUI și applet-uri
Astfel de interfețe sunt numite interfețe de la egal la egal.
bibliotecă de Java clasă bazată pe peer interfețe, numite AWT (Abstract Window Toolkit). Pentru a afișa obiectul creat în aplicație Java și interfața peer-based, creează o pereche (peer-to-peer) obiectul subsistemului grafic al sistemului de operare, care este afișat pe ecran. Prin urmare, grafica AWT obiectele din fiecare mediu grafic sunt de forma, care este caracteristică pentru acest mediu: în MS Windows, Motif, OpenLook, OpenWindows, - toate ferestrele create în AWT, arata ca un ferestre „nativ“ din acest mediu de desktop.
O pereche de obiecte care implementeaza un peer-interfață care interacționează îndeaproape în timpul rulării. Modificarea unui obiect în Java obiect schimbare aplicație GUI implică imediat, și-i schimba aspectul pe ecran.
Este din cauza acestei realizări peer interfețe și alte metode de „native“ (native), scrise în primul rând în C ++, este necesar ca fiecare platformă pentru a elibera propria sa versiune a JDK.
În versiunea JDK 1.1 biblioteca AWT a fost reproiectat. Aceasta adaugă capacitatea de a crea componente scrise în întregime în Java și nu sunt dependente de peerinterfeysov. Astfel de componente a devenit cunoscut sub numele de „lumină“ (ușor), în contrast cu componentele interfețele implementate prin intermediul peer-numite „grele“ (grele).
„Lumina“ componente toate arata la fel, își mențin specificat la crearea formularului (arata si se simt). În plus, aplicația astfel încât să puteți dezvolta la lansarea sa ar putea alege orice tip special: „Motif“, „Metal“, „Windows 95“, sau chiar alte și de a schimba punctul de vedere în orice punct de funcționare.
Aceasta este o caracteristică interesantă a componentelor „ușoare“, numite PLF (conectabile arata si se simt). Această reducere este uneori scris ca „plaf“.
În același timp, ea a creat o bibliotecă extinsă a componentelor Java „light“ numit Swing. A fost rescris toate biblioteca de componente AWT, astfel încât componentele bibliotecii Swing pot fi utilizate singure, în ciuda faptului că toate clasele ei clasele de biblioteca AWT se extind.
clasa biblioteca Swing este furnizat ca o completare la JDK 1.1. În următoarea versiune de Java SE JDK este inclus împreună cu biblioteca grafică AWT ca o clasă de bază, care pune în aplicare ideea unei „100% Pure Java“.
În Java SE biblioteca AWT extins foarte mult, nu numai biblioteca Swing, dar, de asemenea, adăugarea de noi instrumente de desen, text și imagine de ieșire, cunoscut sub numele de Java 2D. și înseamnă realizarea metodei de mișcare a textului DND (Drag and Drop).
În plus, Java SE include noi I / O Metoda de introducere metode cadru și mijloace de conectare cu dispozitive suplimentare de intrare / ieșire, cum ar fi un stilou de lumină sau o tastatură Braille, numită Accesibilitate.
Toate aceste instrumente Java SE: AWT, Swing, Java 2D, DND, Input Method
Cadru și Accesibilitate - a făcut biblioteca de instrumente grafice Java nazvan-
clorhidric JFC (Java Foundation Classes).
O descriere a fiecăruia dintre aceste fonduri vor face o carte întreagă, așa că trebuie să ne limităm la doar o reprezentare a mijloacelor de bază ale bibliotecilor AWT și Swing.
Componenta si containere
Conceptul de bază al unei interfețe grafice cu utilizatorul (GUI) - un sistem (componente) grafică componente. în limba română, cuvântul „componentă“ înseamnă o parte componentă, un element de ceva, dar într-o interfață grafică, acest concept este mult mai specific. Acesta este un element separat, cu totul specific, care poate fi utilizat într-o interfață grafică independent de celelalte elemente. De exemplu, un câmp de intrare, un buton, o bara de meniu, bara de derulare, buton radio (comutator). De asemenea, a componentelor sale - fereastra aplicației în sine. Componentele pot fi invizibile, de exemplu panou unindu componente, de asemenea, este o componentă.
Tu nu va fi surprins să afle că în clasa AWT Componenta este considerată a fi o componentă a obiectului sau a oricărui obiect al unei clase care extinde componenta de clasă. Clasa Componenta conține metode generice funcționează cu orice componentă a interfeței grafice cu utilizatorul. Această clasă - centrul bibliotecii AWT.
Fiecare componentă, înainte de afișare plasate într-un container (container). Container „știe“ cum să plasați componentele de pe ecran. Desigur, în limbajul Java Trailers - container este un obiect sau oricare din clasa sa de extensie. moștenitorul direct al acestei clase - clasa JComponent - vârful ierarhiei multor componente ale bibliotecii
Plasarea componentei - obiect din clasa Component sau extinderea acestuia, adăugați-l la o clasă container obiect creat anterior sau una dintre metodele sale de extensii container adăuga ().
Clasa Container în sine este o componentă invizibilă, se extinde clasa Component. Astfel, într-un container împreună cu componentele containerelor pot fi plasate, în care există alte componente, realizandu-se astfel o mai mare flexibilitate a componentelor.
Fereastra principală a aplicației, interacționează în mod activ cu sistemul de operare, este necesar să se bazeze pe regulile sistemului său grafic. Ar trebui să fie mutat în jurul valorii de pe ecran, redimensiona, răspunde la mouse-ul și tastatura. Cutia trebuie să aibă cel puțin următoarele componente standard:
bara de titlu (bara de titlu), pe partea stângă pe care doriți să plasați meniul contextual butonul și dreapta - plierea buton și derularea ferestrei și faceți clic pe aplicația este închisă;
Cutie ar trebui să fie înconjurată de un cadru (de frontieră), răspunde la acțiunile mouse-ului.
Fereastra cu aceste componente într-un fel gata descris în cadru de clasă. Pentru a crea o fereastră în biblioteca AWT, suficient pentru a face extinderea de clasa a cadrului de clasă. așa cum se arată în exemplul 8.1. Doar opt linii de text, iar fereastra este gata.
Listarea 8.1. fereastră prea simplu aplicație AWT
class TooSimpleFrame extinde Frame
statice void main (String [] args) publice
Frame fr = new TooSimpleFrame (); fr.setSize (400, 150); fr.setVisible (true);
clasa TooSimpleFrame dispune de toate proprietățile clasei Frame. Este extensia sa. Se creează o instanță a ferestrei fr. și metoda setSize () setează dimensiunea ferestrei de pe ecran - 400,150 pixeli. Dacă nu specificați dimensiunea ferestrei, ecranul va fi valoarea minimă a ecranului - se va vedea doar bara de titlu. Desigur, atunci vă puteți întinde fereastra cu mouse-ul la orice dimensiune.
Apoi, apare o casetă de dialog de pe ecran prin setVisible (adevărat). Adevărul este că, din punctul de vedere al bibliotecilor AWT, a crea o fereastră - apoi selectați zona de memorie umplut cu pixelii dorit și conținutul de afișare a acestei zone a ecranului - este o altă provocare pe care și decide să setVisible metoda (adevărat).
Desigur, acest lucru nu este potrivit pentru fereastra. Ca să nu mai vorbim de faptul că el nu are un titlu, fereastra nu poate fi închis. Cu toate că poate fi mutată pe ecran, redimensiona, minimiza pe bara de activități, și să prezinte, dar cererea este completa echipa nu ne-am programat. Fereastra nu poate fi închis sau faceți clic pe butonul de pe buton cu o cruce în colțul din dreapta sus al ferestrei, sau o combinație de taste
chei AREA
Listarea 8.2 la programul de listare 8.1 adăugat bara de titlu și apel la o metodă care permite să completeze cererea.
Listarea 8.2. fereastră simplă cerere
import java.awt * .; import java.awt.event * .;
class SimpleFrame extinde Frame
void windowClosing publice (WindowEvent ev) statice void main (String [] args) publice Pentru a arăta diferitele variante de programe, a adăugat designerul SimpleFrame clasă. referindu-se la constructorul superclasei cadrul său. care înregistrează argumentul său e în bara de titlu a ferestrei. Proiectantul mutat dimensiunea ferestrei de instalare, afișa și a adăugat o referință la addWindowListener) metoda (. răspunde la o fereastră. Argumentul acestei metode este trecut o instanta a unei clase interioare anonime care extinde WindowAdapter clasă. Această clasă implementează anonim windowClosing metoda (). prelucrare încercați să închideți fereastra. Această implementare este foarte simplu - aplicația se termină ieșirea metoda statică (clasa System). Fereastra se închide automat, în același timp. Toate acestea vom analiza în detaliu în capitolul 15. Pentru moment, trebuie doar să adăugați liniile prezentate în toate programele care utilizează biblioteca AWT pentru a închide fereastra și termina aplicația. Deci, gata să caseta. Dar este gol. Deriva-l, conform tradiției, salutul „Bună ziua, secolul XXI mondial!“, Cu toate acestea, ușor modificate. Listarea 8.3 prezintă un program complet al acestei concluzii, și Fig. 8.1 arată fereastra. Listarea 8.3. program de grafica cu un salut import java.awt * .; import java.awt.event * .; class HelloWorldFrame extinde Frame g.setFont (font nou ( "Serif", Font.ITALIC | Font.BOLD, 30)); g.drawString ( "Bună ziua, secolul XXI mondial!", 20, 100); statice void main (String [] args) publice
Frame f = new HelloWorldFrame ( "Bună ziua, lume a secolului XXI!"); f.setSize (400, 150); f.setVisible (true); f.addWindowListener (nou WindowAdapter ()
void windowClosing publice (WindowEvent ev)