Pentru reprezentarea și manipularea informației despre culoare se folosește clasa java.awt.Color. Cea mai simplă utilizare a acestei clase este utilizarea culorilor predefinite, pe care le conține sub forma de câmpuri statice.
De exemplu, culoarea albastru este reprezentată prin câmpul
static Color.blue, iar culoarea galben prin Color.yellow.
În consecință, dacă dorim să punem componentei comp
culoarea de fond albastru și culoarea de primplan galben, vom folosi
instrucțiunile:
comp.setBackground(Color.blue);
comp.setForeground(Color.yellow);
Pentru a afla toate culorile predefinite și celelalte specificații
privind clasa Color trimitem cititorii la documentația Java API.
Culorile predefinite sunt folosite și în exemplul care urmează.
Exemplu În fișierul Culori.java se dă un exemplu de aplicație, în care se demonstrează utilizarea culorilor predefinite din clasa java.awt.Color. Fereastra aplicației conține o listă cu denumirile culorilor
predefinite din clasa Color și un panou pe care se afișează culorile
respective, prin setarea corespunzătoare a culorii de fond a panoului.
Când se selectează o culoare din listă, se observa imediat modificarea
corespunzătoare a culorii panoului. În acest scop, în program au fost
folosite două tablouri: Când se selectează un articol din listă, se generează un
ListSelectionEvent. Pentru ascultarea lui s-a creeat clasa AscultaLista.
În metoda valueChanged a acestei clase, se determină indicele
articolului care a fost selectat și se setează drept culoare de fond a
panoului culoarea cu același indice din tablouCulori.
|
Clasa Color încapsulează informațiile despre culoare. În Java AWT se
folosește modelul de culori RGB (engleză: red, green, blue) în
care fiecare culoare este considerată ca fiind compusă din trei culori
fundamentale: roșu, verde și albastru. În consecință, culoarea este dată
prin trei numere cuprinse în intervalul [0, 255], reprezentând ponderile
celor trei culori fundamentale. În figura de mai jos este reprezentată
schema de combinare a acestor trei culori fundamentale.
Clasa Color conține și un al patrulea câmp, numit alpha,
care poate avea, de asemenea, valori întregi în intervalul [0..255] și
exprima opacitatea culorii respective. Daca alpha=255, culoarea
este complet opaca. Aceasta înseamnă că, dacă o figură cu această
culoare se suprapune peste alta, o maschează complet. Dacă alpha=0,
culoarea este complet transparentă, deci practic invizibilă. Între
aceste valori extreme putem avea diferite opacități intermediare,
cuprinse intre 0 si 255.
Culoarea în sistemul RGB poate fi exprimată nu numai printr-o instanță a clasei Color, ci și printr-un număr întreg (de tip int), în care cei patru octeți au, respectiv, valorile componentelor alpha, r, g, b exprimate în intervalul [0..255]. Componentele sunt plasate astfel: alpha în biții 24..31, r în biții 16..23, g în biții 8..15 și b în biții 0..7. Clasa Color conține, de asemenea, constructori și metode care
suportă sistemele de culori sRBG și HSB. Standardul sRGB definește o
variantă standardizată a sistemului RGB, destinată monitoarelor cu tub
catodic. În acest sistem, parametrii r, g, b și alpha se exprimă prin
numere reale în intervalul [0.0...1.0]. |
Sistemul de culori HSB (engleză: Hue, Saturation and
Brightness) ofera o descriere a culorilor independentă de sistemul
de afișare, folosind următorii trei parametri: Nuanța (engleză: Hue) care se exprimă în grade, în intervalul [0..360], unde 0 este rosu, 60 este galben, 120 este verde etc. Saturație (engleză: Saturation) este puritatea culorii, exprimată în procente, în intervalul [0..100]. La valoarea 0, nuanța (Hue) nu are semnificatie, iar la valoarea 100 culoarea este pură. Strălucire (engleză: Brightness) este exprimată de asemenea în procente, în intervalul [0..100]. Valoarea 0 înseamnă negru (iluminare 0%), deci parametrii Hue și Saturation nu au sens. Valoarea 100 reprezintă strălucirea maximă. Diagrama de mai jos dă o reprezentare a culorilor exprimate în sistemul HSB. ![]() În clasa Color, parametrii Hue, Saturation și
Brightness se exprimă prin numere reale (tipul float) în
intervalul [0.0 .. 1.0]. |
Variabile: Clasa Color conține variabile statice finale (constante) care sunt instanțieri ale clasei pentru diferite culori tipice: black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white yellow. Acestea sunt, respectiv, culorile negru, albastru, azuriu, gri inchis, gri, verde, gri deschis, mov, roz, rosu, alb și galben. De exemplu, culoarea verde va fi reprezentata prin Color.green. Toate aceste culori sunt opace, deci au componenta alpha cu valoarea 255. Constructori: Metode: public int getRed() - întoarce ponderea culorii red
(rosu); O prezentare mai completă a câmpurilor, constructorilor și metodelor clasei Color este dată în Index. |
Exemplul 1: În fișierul TestRGB.java este
dat un exemplu de aplicație, în care se testează compunerea diferitelor
culori în sistemul RGB. În partea stângă a ferestrei sunt trei rigle de
ajustare (JSlider) pentru cele trei culori fundamentale (roșu, verde,
albastru). În dreptul fiecărei rigle există un câmp de text în care se
afișează valoarea indicată, în întervalul [0, 255]. În partea dreaptă a
ferestrei există un panou (JPanel) a cărui culoare de fond corespunde
combinației de culori date de cele trei rigle. Exemplul 2: În fișierul TestHSB.java este
dat un exemplu de aplicație în care se testează alegerea culorilor în
sistemul HSB. Fereastra se aseamană cu cea din exemplul precedent, dar
cele trei rigle servesc pentru ajustarea componentelor HSB: nuanța,
saturație și strălucire. Valorile corespunzătoare sunt indicate în
câmpurile de text alăturate, ca numere reale în intervalul [0.0, 1.0].
La partea inferioară a ferestrei sunt afișate componentele culorii în
sistemul RGB.
Ajustând valorile prin intermediul riglelor, constatăm
următoarele: |
Pentru a creea o fereastră de dialog, care conține în ea un
JColorChooser și întoarce culoarea selectată, în clasa JColorChooser
există metoda public static JDialog createDialog(Component c,String title, boolean modal, JColorChooser chooserPane, ActionListener okListener, ActionListener cancelListener) în care: - c este componenta beneficiară (owner) a ferestrei de dialog create; - title este titlul ferestrei de dialog create; - argumentul boolean modal indică dacă fereastra este modală; - chooserPane este instanța clasei JColorChooser care se întroduce în fereastra de dialog; - okListener si cancelListener sunt ascultătoarele de acțiune care reacționeaza la apăsarea butonului OK, respectiv Cancel al selectorului de culoare. Folosind un JColorChooser, alegerea culorii se poate face în
trei moduri: Exemplu
|