Despre Java Swing - Partea 1
Introducere în aplicații GUI pentru Java
Această parte a ghidului metodologic se va concentra pe utilizarea bibliotecii leagăn, filozofia (așa cum este, și destul de diferit de familiar de MFC), va fi, de asemenea, acorda o atenție suficientă pentru a crea controale proprii.
Inset: istoria java grafica: timpurie - 1.0.x - componentele AWT „grele“ versiuni Java Development Kit au fost utilizate pe scară largă sunt strâns legate o anumită platformă hardware pe care se rulează aplicația. desfășurarea în continuare a „scrie o dată, a alerga peste tot“, concept (a scrie o dată, a alerga peste tot) a însemnat că, în versiunea 1.1.x a fost o tranziție la componentele universale. Apoi, au existat clase „ușoare“ de interfață, în cazul în care se creează orice componentă de pe ecran în Java cu ajutorul claselor grafice și metode. Acest tip de clase de componente au fost combinate într-o bibliotecă numit Swing și disponibile pentru dezvoltatori ca parte atât JDK, precum și un produs separat JFC (Java Foundation Classes). Și componentelor vechi din AWT au rămas intacte, cu toate că firma JavaSoft pentru compatibilitate cu versiunile mai vechi ale JDK -, responsabil pentru eliberarea JDK - recomandă să nu se amestece în același program de componente vechi și noi.
Caracteristici cheie și conceptul JFC
Swing GUI Componente
un număr suficient de mare de controale menite să construiască o interfață: butoane, liste, seturi de marcaje ...
Conectabile Look and Feel Suport
Aplicațiile care utilizează Swing componente-uri oferă strategii posibile ca buton sau câmp de text va vyglyat precum și modul în care se va comporta în interacțiunea cu utilizatorul. În standard au fost stiluri jdk1.3 pentru a afișa interfața sub ferestrele / motiv / metal și vă puteți dezvolta un stil de afișare pentru tine: de exemplu, 10 versiuni de dezvoltatori JBuilder Borland au creat propriul lor stil.
MVC - Model View Controller
Multe componente Swing sunt puse în aplicare pe tehnologia MVC. Aceasta înseamnă că componenta este împărțit în trei părți: model de (model), vedere (vedere) și un controler (controler). Fiecare dintre aceste părți este strict și numai sarcina sa. stochează model de date componente importante și oferă o interfață de programare pentru a le. Vezi se ocupă cu componenta externă a opiniilor de imagine, și strâns legate de interfața sistemului de personalizare L # 038; F. Controlerul controlează, de asemenea, componenta în ansamblu, primește semnale de la tipul și notificarea modificărilor modelului componentei. Această distincție este importantă atunci când schimbarea L # 038; F. Realizarea componentei pentru Swing, va face in mod natural potrivit pentru diferite interfete L # 038; F. Tehnologia MVC - asta e tot ce ai nevoie. Suficient pentru a scrie diferite tipuri de metale L # 038; F, Motif L # 038; F, Windows L # 038; .. F, etc. În acest caz, modelul și controler modificările componente.
Preparate pentru desen grafica 2D, cu posibilitatea de a trimite imagini la imprimare, salvați într-un fișier.
Suport pentru D # 038; D în interiorul aplicație Java și pe mai multe aplicatii: Java si Java, Java și create cu alte limbaje de program.
Capacitatea de a crea aplicații cu suport pentru mai multe limbi.
Toate clasele și interfețele sunt situate în pachetul leagăn javax.swing sau încorporate în compoziția sa. Versiunea anterioară AWT bibliotecă precum și un număr de clase poartă caracter auxiliar sau de schimbare sunt în pachetul java.awt. astfel încât la începutul proiectului, conectați întotdeauna pachetele:
Notă: Metodele programelor de livrare și de diseminare folosind leagăn. pentru că bibliotecă de leagăn este JRE standard (Java mediu de rulare), atunci nu probleme speciale aici. Un alt lucru, în cazul în care aplicația utilizează biblioteci străine și multe dintre ele, în special în mod clar, această problemă apare atunci când creați o aplicație web. Sun a dezvoltat o tehnologie Java de start web (necesar pentru funcționarea sa componentele sunt instalate cu JRE). Ideea este ca utilizatorul este pe de descărcări Internet și execută un mic fișier text al cărui nume se termină cu o extindere, JNLP, apoi subsistemul Java Web începe de pompare cu site-ul de soare sau alți furnizori de biblioteci necesare. Se creează o comandă rapidă pentru a rula - aplicația este gata de lucru.
java api 2d
Să începem cu un simplu: a crea o aplicație utilizând grafica 2d mijloace. În primul rând aveți nevoie pentru a crea o fundație - „panza“ pentru a picta pentru aceasta, a crea o casetă de dialog. Ar trebui să fie utilizați clasa JFrame (pentru ferestre non-modal) sau JDialog (sootvetstvnno modal).
Acest lucru creează un obiect „caseta de dialog“. Ca un constructor parametru specifică titlul ferestrei de test. Apoi a determinat ce ar trebui să se întâmple atunci când închideți fereastra (când faceți clic pe cruce mică din colțul din dreapta sus al ferestrei). Următoarele opțiuni sunt disponibile (aceste constante sunt definite în WindowConstants de clasă):
• DO_NOTHING_ON_CLOSE - nu fac nimic. Fereastra se închide și nu se întâmplă nimic.
• HIDE_ON_CLOSE - fereastra va fi ascunsă.
• DISPOSE_ON_CLOSE - fereastră la fel ca în cazul precedent va fi ascuns, dar în același timp și distruse (nu definitiv, doar o parte din resursele sistemului de operare folosit va fi „lansat“ pentru a afișa fereastra). Re-fereastră poate fi afișată prin apelarea setVisible (deși poate dura puțin mai mult decât „pur și simplu ascunde și nu pentru a elibera resurse“ - HIDE_ON_CLOSE).
• EXIT_ON_CLOSE - pentru a închide formularul de cerere este completat prin apelarea System.exit ().
Apoi am setat dimensiunea folosind setSize de apel sau dimensiunile explicite - lățimea sau înălțimea sau înveliți într-un obiect Dimensiune (vă rugăm să rețineți această clasă, multe metode de grafice indică dimensiunea ceva prin intermediul obiectelor acestei clase).
Vom începe cu un simplu: în formă trebuie să fie trase anumite „compoziție“ geometrică pentru a crea numărul maxim de metode care vor fi utilizate.
Notă: modelul de procesare eveniment MFC-stil hartă eveniment în leagăn nu este utilizat - în schimb, trebuie fie să suprascrie metode de clasă strămoș sau de a folosi conceptul de „public“ (începe cu prima metodă).
• La redesenarea metodă virtuală eveniment numit vopsea, deoarece se transmite numai parametrul Graphics valoarea obiectului, care este similar cu device context în stil CDC MFC.
• Exemplul folosește metoda getSize care returnează o dimensiune de magazine obiect de dimensiunea ferestrei.
• La specificarea culorilor prin apelarea
culoare setează culoarea în format RGBA. În cazul în care ultima componentă - transparență. Un al doilea parametru constructor de culoare indică dacă această transparență acolo sau nu. componenta Alpha ocupă biții 24-31, 16-23, componenta roșu, verde - 8-15, și, respectiv, albastru - 0-7. În general, ca parte a designerului de clasa de culoare, există opțiuni în care toate componentele menționate mai sus sunt definite în mod clar și separat:
Când specificați culoare, ține cont de ceea ce este utilizat tipul variabilei. Dacă variabila este un întreg, valoarea ar trebui să fie în intervalul 0-255, dacă este reală, apoi 0-1.
• Când apelați o metodă realizată fillRect zona de umbrire a dreptunghiului cu culoarea curentă - și de fapt cadru obiect și fundal sunt aceleași.
Ceea ce urmează este o carte de referință a metodelor de clasă Graphics:
Golește zona specificată ca culoarea de umplere cu ajutorul celui care este considerat a fi culoarea implicită pentru dispozitivul pe care suntem de desen. Pur și simplu pune, este de culoare albă.
Schimbă regiunea de tăiere curentă.
Copiile la coordonatele specificate (primul parametru 4a) la punctul menționat.
Se creează un nou context, care este o copie a unuia existent.
Nimicește și eliberează contextul resurselor.
Desenați un dreptunghi cu rama tridimensional. Crescut - indică dacă dreptunghiul vizual „ridicat“ sau „înecat“.
Desenează un arc de elipsă specificat dimensiuni. Arcul electric trebuie să aibă un unghi de pornire (startAngle) și valoarea unghiului în sine (arcAngle).
Desenează o imagine de la punctul specificat și dimensiunea specificată. începând cu variabila "d" ( "destinație") - receptor, și "s" ( "sursă"), respectiv, - imaginea sursă. De asemenea, stabilește culoarea de fundal a obiectului și detectorul. Necunoscând la tine de conceptul MFC de obiecte care sunt interesați să primească o notificare de acest tip de operațiune a fost încheiată cu succes. Dacă este necesar, imaginea este redimensionată.
Toate aceste cifre, cu excepția Point2D și Dimension2D, suport interfata Shape. În această interfață, există metode de a descrie cifrele. Și, în consecință, dacă doriți, puteți crea propria clasă pentru a reprezenta o figură geometrică non-standard.
Pentru prezentarea cifrele sunt similare cu clasele dreptunghi: Rectangle2D, RoundRectangle2D, Arc2D și Ellipse2D.
Clasa de QuadCurve2D pentru a crea o curbă descrisă (tautologie.) Din a doua curbă comandă (definită de aceste două puncte ale curbei la marginile sale și punctul de control). În consecință, CubicCurve2D stabilește o curbă a treia comandă pentru locul ei de muncă aveți nevoie de două puncte finale și două puncte de control deja.
![Studiu - dev, arhiva blog, despre Java Swing - Partea 1 (java) Studiu - dev, arhiva blog, despre Java Swing - Partea 1](https://images-on-off.com/images/48/studydevblogarchiveprojavaswingchast1-e9e82c07.png)
De interes special este clasa GeneralPath. Care vă permite să setați o cifră cu privire la punctele de referință.
![Studiu - dev, arhiva blog, despre Java Swing - Partea 1 (swing) Studiu - dev, arhiva blog, despre Java Swing - Partea 1](https://images-on-off.com/images/48/studydevblogarchiveprojavaswingchast1-42402847.png)
De interes special este o combinație de cifre - Suprafața utilizată pentru această clasă:
Ca parte a clasei Zona dispune de metode pentru toate operațiile booleene pe obiecte:
Transformarea de forme, text și imagini
Revenind la parametrii care guvernează Graphics2D, uita-te la modul în care se pot transforma obiecte. Puteți efectua operațiuni pe obiecte grafice: în mișcare, rotație, scalare, decuparea obiectelor în etapa de redare. Toate aceste transformări sunt definite folosind obiecte derivate din AffineTransform.
Important: toate transformările afine nu conduc la o tranziție la un nou sistem de coordonate în care, de exemplu, liniile care nu sunt paralele cu cele din oțel, sau invers.
Clasa de Graphics2D oferă mai multe metode de transformare. Ai nevoie pentru a crea un obiect AffineTransform și apoi apel metoda transforma o parte a Graphics2D.
Pentru a crea un obiect AffineTransform trebuie să utilizeze metodele de fabricație, ca parte AffineTransform:
matricea de transformare pentru toate aceste operații:
![Studiu - dev, arhiva blog, despre Java Swing - Partea 1 (java) Studiu - dev, arhiva blog, despre Java Swing - Partea 1](https://images-on-off.com/images/48/studydevblogarchiveprojavaswingchast1-3f25d347.png)
de procesare a imaginii
Notă: Partea obiectului pe care doriți să atragă fereastra să aibă o dimensiune unică și formă. O astfel că este dificil de a reproduce folosind calea Shape și clip-tăiere pentru Graphics2D. Apoi vom crea imaginea ca un GIF cu o culoare transparentă (în Java GIF suport de transparență au în mod implicit, pur și simplu descărcați GIF și utilizați-l pentru a apela Graphics.drawImage).
Observatorii: Așa cum am spus mai devreme de încărcare a imaginii poate dura ceva timp, în general, utilizate să aștepte pentru clasa MediaTracker am folosit-o înainte, dar este prea unelte grele nu pot ține evidența procesului de încărcare a imaginii. În acest scop, observatorii clase: Observator.
Este extrem de important: apelul metodei:
Eu pot doar zagrudat fișiere în format JPEG, GIF, PNG. De asemenea, destul de impresionant eu numesc această metodă pentru a redesena eveniment (eveniment unic - apel getImage) lucru este faptul că setul de instrumente de clasă efectuează cache de imagini și de ceva timp stochează în memorie.
Pentru a reprezenta un producător de imagine folosit interfață ImageProducer. Rețineți că sursa de imagine poate fi nu numai un fișier, și orice doriți (atâta timp cât acceptă această interfață). In exemplul de mai jos utilizează clasa MemoryImageSource care vă permite să creați o imagine a conținutului o serie de numere. Dacă aveți un obiect de imagine, apoi pentru a obține o trimitere la producător, utilizați metoda getSource.
Și undeva în codul de vopsea metoda (Graphics g) metoda de apel:
Pentru a reprezenta interfața de utilizare a consumatorilor ImageConsumer. Pentru a lega sau, mai exact, sursa de imagine înveliș printr-un filtru folosind clasa imagefilter. Pentru a demonstra metodele de lucru cu ei, de exemplu, pentru a fi utilizat atunci când imaginea devine mai luminos sau mai întunecos. Cu toate acestea, punct de vedere tehnic, trebuie să se deplaseze de la reprezentare în stilul de culoare RGBA la modelul de culoare HSB. Acest sistem reprezintă un spațiu de culoare în formă de piramidă inversată al cărui vârf ascuțit este situat în centrul coordonatele. Din partea de sus a planului perpendicular floare părăsește axa de luminozitate, care vom fi schimbați.
![Studiu - dev, arhiva blog, despre Java Swing - Partea 1 (blog) Studiu - dev, arhiva blog, despre Java Swing - Partea 1](https://images-on-off.com/images/48/studydevblogarchiveprojavaswingchast1-a665dd94.png)
Inset: ideea generală de modele de culoare. Modelul HSB (Nuanța Saturația Luminozitate = Luminozitate Nuanța Saturația) se bazează pe percepția subiectivă a culorii umane. Acesta a propus în 1978. Acest model se bazează de asemenea pe modelul de culoare RGB, dar orice culoare este determinat prin culoarea sa (ton), saturație (adică, adăugând la ea culoarea albă) și luminanță (adică, adăugarea la ea de vopsea neagră). Practic, orice culoare este obținută din adăugarea unei vopsea gri spectrală. Acest model este dependent de hardware și nu corespunde percepției ochiului uman, deoarece ochiul percepe culorile spectrale ca culori cu luminozitate diferite (albastru apare mai întunecat decât roșu), și în modelul HSB, toate atribuite luminozitatea de 100%. Modelul este dependent de dispozitiv. H determină frecvența luminii și are o valoare de la 0 la 360 de grade. Sau V B: V - valoarea (luând valori cuprinse între 0 și 1) sau B - luminozitate care determină nivelul luminii albe (luând valori cuprinse între 0 și 100%). Este înălțimea conului. S - determină saturația culorilor. Valoarea sa este raza conului.
Ca parte a clasei de culoare are metode de conversie între modelul de culoare CMYK si RGB: HSBtoRGB și RGBtoHSB: