CodeGym /Blog Java /Aleatoriu /Clasa Java.Awt.Color
John Squirrels
Nivel
San Francisco

Clasa Java.Awt.Color

Publicat în grup
Dacă stăpânești Java Abstract Toolkit, va trebui să înveți aplicațiile Java AWT Color Class. Deoarece există o mulțime de constructori și metode implicate, ar putea fi intimidant la început. Dar nu vă faceți griji, v-am acoperit:) Cu această prezentare completă a Java AWT Color, veți învăța cum să creați un nou tip de culoare și să îl gestionați în cel mai scurt timp. Vă vom oferi, de asemenea, câteva teste practice care vă vor ajuta să vă perfecționați abilitățile.

Ce este AWT Color Class în Java?

Scopul principal al AWT Color este de a permite dezvoltatorilor să creeze noi culori folosind cod Java folosind pachete RGB (roșu, verde, albastru), RGBA (roșu, verde, albastru, alfa) sau HSB (nuanță, saturație, componente BRI). Clasa conține două valori - codul nuanței și valoarea opacității/transparenței. Clasa Java.Awt.Color - 1Iată cum declarați Clasa java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
Pentru a declara diferite tipuri de culori folosind Class.java.awt.Color, dezvoltatorii folosesc constructori - le vom arunca o privire acum.

AWT.Constructori de culoare în Java

În funcție de parametrul culorii pe care doriți să o creați, va trebui să utilizați un anumit tip de constructor de culoare. Există o mână de acestea - să le examinăm unul câte unul.
  • Color(float r, float g, float b)este clasa pe care o utilizați pentru a defini o culoare în schema de culori RGB care este opac. Puteți specifica gama de culori între 0,0 și 0,1.
  • Color(float r, float b, float g, float a)este clasa care definește o culoare RGBA (intervalul de valori disponibile este 0,0 și 0,1).
  • Color(ColorSpace c, float[], co, float a)definește o culoare în ColorSpace pe care îl specificați în prealabil. Un dezvoltator specifică gama de componente de culoare din matricea flotantă a unui alfa definit.
  • Color(int, rgb)este o clasă care creează o culoare RGB (opac). Asigurați-vă că acordați atenție valorii componentei constructorului - 16-23 pentru roșu, 8-15 pentru verde, 0-7 pentru albastru.
  • Color(int r, int g, int b)- o metodă folosită pentru definirea unei culori RGB opace. Valoarea culorii ar trebui să fie între 0 și 255.
  • Color(int r, int g, int b, int a)- creează o culoare în schema RGBA (0-255).
  • Color(int rgba, boolean b)este folosit pentru a crea culori sRGB într-o valoare combinată definită. Intervalul de valori se întinde între 24-31 pentru alfa, 16-23 pentru roșu, 8-15 pentru verde și 0-7 pentru albastru.
În afară de asta, class.awt.color operează cu câmpurile, moștenite de la Java.awt.Transparency:
  • TRANSLUCENTreprezintă dacă culoarea conține sau nu valori alfa și are două valori - 0 și 1.
  • OPAQUEatribuie obiectului valoarea alfa de 1, garantându-i opacitatea completă.
  • BITMASKreprezintă valoarea absolută a opacității sau a transparenței și se află în intervalul (0;1) unde 0 este transparența totală și 1 este opacitatea extremă.

Top 15 metode de utilizat cu Java AWT Color Class

Pentru a manipula o culoare, pentru a-i ajusta întunericul sau luminozitatea, dezvoltatorii Java se bazează pe diferite metode. Există zeci de acestea, așa că nu trebuie să le înveți pe toate pe de rost. Cu toate acestea, când vine vorba de cele mai utilizate metode Java AWT Color, am restrâns lista la cincisprezece. Amintirea acestora fără a fi nevoie să faceți referire la documentația Java API ar fi utilă dezvoltatorilor.

mai întunecat()

Metoda este folosită pentru a crea o nouă culoare care este o versiune mai închisă a culorii pe care ați definit-o deja. Exemplu :

Color.green.darker()
Dacă aplicarea darker()o dată nu este suficientă pentru a crea o nuanță de care aveți nevoie, nu ezitați să aplicați metoda de câte ori doriți, după cum se arată mai jos:

Color.green.darker().darker().darker().darker().darker()

mai luminos()

Așa cum sugerează și numele, Color brighter()este folosit pentru a lumina nuanța pe care o aveți deja. Similar cu darker(), poate fi folosit de mai multe ori pentru o singură culoare. Exemplu :

Color myColor = Color.RED;          

    JLabel label = new JLabel("First Name");
    label.setForeground(myColor.brighter());

int getAlpha()

Dacă doriți să returnați componenta alfa a culorii dvs., utilizați această metodă. Rețineți că valorile alfa se află în intervalul 0-255. Iată un exemplu de aplicare și returnare a metodei. Exemplu :

alpha = Color.black.getAlpha();
return new Color(components[0], components[1], components[2], alpha);

static Culoare getColor(String nm)

Dezvoltatorii Java pot folosi această metodă pentru a localiza o culoare folosind proprietățile sistemului. Există și alte metode care tratează obiective similare:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

Decodificare static culoare (șir nm)

Această metodă este folosită pentru afișarea unei culori ca șir. După finalizarea conversiei, un dezvoltator va obține o culoare opacă definită. Exemplu :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

PaintContext createContext(ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform xform, RenderingHints sugestii)

Această metodă pare complexă, dar este mai ușor de manipulat decât pare. Paint Context CreateContext()este folosit pentru a defini un model de culoare solidă repetat. Exemplu :

 public PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds,

                  AffineTransform xform, RenderingHints hints)

 {
   try
   {
     return new AxialShadingContext(shading, cm, xform, matrix, deviceBounds);
   }
   catch (IOException e)

   {

     LOG.error("An error occurred while painting", e);

     return new Color(0, 0, 0, 0).createContext(cm, deviceBounds, userBounds, xform, hints);

   }
 }
}

float[] getComponents(ColorSpace cspace, float[] compArray)

Aceasta este o metodă Java pe care o puteți aplica unei culori pentru a returna matricea flotantă și componentele alfa. Metoda se aplică unui anumit ColorSpacedefinit de cspace. Exemplu :

public float[] getComponents(ColorSpace cspace, float[] compArray) {

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

Dezvoltatorii Java pot folosi această metodă pentru a returna spațiul de culoare pentru o culoare aleasă. O altă modalitate de a obține un spațiu de culoare pentru o anumită intrare este prin aplicarea Arrays.to.String. Aceasta este o strategie mai complexă, așa cum se vede în exemplul de mai jos: Exemple :

public class Main {
  public static void main(String[] args) {

    Color myColor = Color.RED;          

    System.out.println(Arrays.toString(myColor.getComponents(ColorSpace.getInstance(ColorSpace.CS_CIEXYZ),null)));

getHSBColor(float h, float s, float b)

Dezvoltatorii Java aplică această metodă pentru a crea un nou obiect de culoare bazat pe valorile modelului HSB. Exemplu :

 private Color colorAt(int y)

 {
   return Color.getHSBColor(1 - (float) y / (height - 1), 1, 1);
 }
}

getGreen()	returns the green component in the range 0-255 in the default sRGB space.

getGreen()

Această metodă Java returnează valoarea componentei verzi pentru culoarea pe care ați creat-o. Toate valorile se încadrează în intervalul care corespunde verdelui în schema de culori RGB. Exemplu :

Color clickBoxColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), 20);

getRed()

Similar cu getGreen(), getRedreturnează valoarea pentru componenta roșie a unei anumite culori. Ați văzut deja cum a fost aplicată metoda în exemplul de mai sus.

getBlue()

Această metodă returnează valoarea albastrului în intervalul de valori ale schemei de culori RGB. De asemenea, pentru exemplul utilizării getBlue(), consultați descrierea getGreen().

getAlpha()

Metoda getAlpha() este folosită în Java atunci când un dezvoltator dorește să găsească valoarea alfa a unei anumite culori. Similar cu RBG, alfa tuturor culorilor se află în intervalul 0-255. Exemplu : iată cum getAlpha()a fost folosit ca parte a unei bucle.

int alpha = color.getAlpha();
	if (alpha != 255)
	{
		setStrokeAlpha(alpha);
		strokeAlphaSet = true;

getTransparency()

Această metodă returnează valoarea de transparență pe care dumneavoastră sau un alt dezvoltator ați specificat-o pentru culoare la crearea acesteia. Exemplu :

public int getTransparency() {

return myColor.getTransparency();

boolean este egal(obiect obiect)

Această metodă este foarte utilă dacă comparați două culori una cu alta. Le permite dezvoltatorilor Java să știe dacă două obiecte de culoare au valori egale. Exemplu :

import java.awt.Color;
public class Main {
  public static void main(String[] a) {
    Color myBlack = new Color(0, 0, 0); // Color black
    Color myWhite = new Color(255, 255, 255); // Color white
    System.out.println(myBlack.equals(myWhite));
  }
}

este egal(obiect obiect)

Similar cu boolean equals(Object obj), aceasta este o metodă comparativă. Îl folosim pentru a determina dacă obiectele de culoare sunt egale între ele. Exemplu :

Object a = new Object(); Object b = new Object(); return(a.equals(b));

Ghid pentru culorile principale utilizate în Java

Acum că înțelegeți metodele folosite pentru a manipula culorile în Java, să aruncăm o privire la tipurile de câmpuri cu care veți lucra. Acestea sunt culorile statice reale pe care dezvoltatorii Java le pot defini. Puteți defini fie o culoare introducând numele acesteia (asigurați-vă că o introduceți exact așa cum este scrisă în documentația oficială) sau specificând valoarea RGB. Să aruncăm o privire asupra paletei pe care le folosesc dezvoltatorii:
Numele domeniului Descriere
culoare statică negru (NEGRU) Definește culoarea neagră
culoare statică alb (ALB) Definește culoarea albă
culoare statică albastru (ALBASTRU) Folosit pentru a defini albastrul
culoare statică gri (GRAY) Definește culoarea gri
culoare statică gri închis (DARK_GRAY) Definește o nuanță mai închisă de gri
culoare statică lightgrey (LIGHT_GRAY) Definește o nuanță mai deschisă de gri
culoare statică verde (VERDE) Folosit pentru a defini culoarea verde
static Culoare magenta (MAGENTA) Definește nuanța magenta
Culoare statică roz (ROZ) Definește roz în Java
Culoare statică portocaliu (ORANGE) Creează culoarea portocalie în Java
static Culoare galben (GALBEN) Folosit pentru a defini galbenul
static Culoare roșu (ROSU) Definește culoarea roșie în Java

Probleme de practică pentru utilizarea AWT.Color în Java

Simțiți că aveți o bază solidă pentru AWT Color în Java? Să testăm aceste abilități rezolvând câteva probleme practice - aici, va trebui să aplicați constructori și metode comune, precum și alte instrumente Java care nu sunt legate de culoare. Practică problema #1 . Creați o componentă personalizată care permite unui utilizator de program să modifice nivelurile RGB într-o culoare (similar cu RGBColorChooser). Asigurați-vă că includeți getColor() în componentele dvs. Faceți din componentă o subclasă Panel, nu un applet. Răspuns : aceasta este o problemă destul de complexă - să o împărțim în pași gestionați:
  1. Transformați un RGBChooserîntr-o componentă.
  2. Adăugați o nouă rutină la componentă - getColor().
  3. Adăugați setColor()pentru a seta culoarea.
Iată exemplul de cod pe care ar trebui să-l obțineți la sfârșitul zilei:

import java.awt.*;
    import java.awt.event.*;
    
    public class RGBChooserComponent extends Panel implements AdjustmentListener {
       
       private Scrollbar redScroll, greenScroll, blueScroll;   // Scroll bars.
       
       private Label redLabel, greenLabel, blueLabel;  // For displaying RGB values.
                     
                     
       private Canvas colorCanvas;  // Color patch for displaying the color.
                     
       public RGBChooserComponent() {  // Constructor.
       
           /*Now let’s add scrollbars with values from 0 to 255. */
           
           redScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
           greenScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
           blueScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
           
           /* Create Labels showing current RGB and HSB values. */
           
           redLabel = new Label(" R = 0");
           greenLabel = new Label(" G = 0");
           blueLabel = new Label(" B = 0");
           
           /* We are setting backgrounds for Scrollbars and Labels, so they get the default
              gray background of the applet. */
           
           redScroll.setBackground(Color.lightGray);
           greenScroll.setBackground(Color.lightGray);
           blueScroll.setBackground(Color.lightGray);
           
           redLabel.setBackground(Color.white);
           greenLabel.setBackground(Color.white);
           blueLabel.setBackground(Color.white);
           
           /* Establish a panel that would listen for changes to the Scrollbars' values */
           
           redScroll.addAdjustmentListener(this);
           greenScroll.addAdjustmentListener(this);
           blueScroll.addAdjustmentListener(this);
           
           /* Add a canva, the background color of which will always match the currently selected color. */
           
           colorCanvas = new Canvas();
           colorCanvas.setBackground(Color.black);
           
           /* Create the applet layout, which consists of a row of
              three equal-sized regions holding the Scrollbars,
              the Labels, and the color patch.  The background color
              of the applet is gray, which will show around the edges
              and between components. */
           
           setLayout(new GridLayout(1,3,3,3));
           setBackground(Color.gray);
           Panel scrolls = new Panel();
           Panel labels = new Panel();
           
           add(scrolls);
           add(labels);
           add(colorCanvas);
           
           /* Add the Scrollbars and the Labels to their respective panels. */
           
           scrolls.setLayout(new GridLayout(3,1,2,2));
           scrolls.add(redScroll);
           scrolls.add(greenScroll);
           scrolls.add(blueScroll);
           
           labels.setLayout(new GridLayout(3,1,2,2));
           labels.add(redLabel);
           labels.add(greenLabel);
           labels.add(blueLabel);
           
       } // end init();
       
       
       public Color getColor() {
              // Get the color currently displayed by the component.
           int r = redScroll.getValue();
           int g = greenScroll.getValue();
           int b = blueScroll.getValue();
           return new Color(r, g, b);
       }
       
       
       public void setColor(Color c) {
             // Set the component to display the given color.
             // (Ignore this if c is null.)
          if (c != null) {
             int r = c.getRed();      // Get the color levels from the color.
             int g = c.getGreen();
             int b = c.getBlue();
             redLabel.setText(" R = " + r);   // Set the labels.
             greenLabel.setText(" G = " + g);
             blueLabel.setText(" B = " + b);
             redScroll.setValue(r);        // Set the scrollbars.
             greenScroll.setValue(g);
             blueScroll.setValue(b);
             colorCanvas.setBackground(new Color(r,g,b));  // Set the canvas.
             colorCanvas.repaint();
          }
       }
       
       
       public Dimension getMinimumSize() {
              // Specify the minimum reasonable size of this component.
          return new Dimension(150,40);
       }
       
       
       public Dimension getPreferredSize() {
              // Specify the preferred size of this component.
          return new Dimension(280,80);
       }
       
    
       public void adjustmentValueChanged(AdjustmentEvent evt) {
               // This is called when the user has changed the values on
               // one of the scrollbars.  All the scrollbars are checked,
               // the labels are set to display the correct values,
               // and the color patch is reset to correspond to the new color.
           int r = redScroll.getValue();
           int g = greenScroll.getValue();
           int b = blueScroll.getValue();
           redLabel.setText(" R = " + r);
           greenLabel.setText(" G = " + g);
           blueLabel.setText(" B = " + b);
           colorCanvas.setBackground(new Color(r,g,b));
           colorCanvas.repaint();  // Redraw the canvas in its new color.
       } // end adjustmentValueChanged
    
       
       public Insets getInsets() {
              // The system calls this method to find out how much space to
              // leave between the edges of the applet and the components that
              // it contains.  I want a 2-pixel border at each edge.
          return new Insets(2,2,2,2);
       }
       
    }  // end class RGBColorChooser

Concluzie

Felicitări, ați trecut prin acest ghid extins despre AWT.Color în Java. Acum, gestionarea interfețelor va fi mult mai ușoară. Nu uitați să vă aplicați cunoștințele rezolvând probleme de practică și chestionare CodeGym. Practica face perfectă, așa că dă-ți cea mai bună soluție pentru problemele eșantionului!
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION