CodeGym /Java blog /Tilfældig /Java.Awt.Color Class
John Squirrels
Niveau
San Francisco

Java.Awt.Color Class

Udgivet i gruppen
Hvis du mestrer Java Abstract Toolkit, bliver du nødt til at lære applikationerne af Java AWT Color Class. Da der er mange konstruktører og metoder involveret, kan det føles skræmmende i starten. Men ingen bekymringer, vi har dækket dig :) Med denne fulde oversigt over Java AWT Color lærer du, hvordan du opretter en ny farvetype og administrerer den på ingen tid. Vi tilbyder også et par øvelsesprøver, der hjælper dig med at finpudse dine færdigheder.

Hvad er AWT Color Class i Java?

Det primære formål med AWT Color er at give udviklere mulighed for at skabe nye farver ved hjælp af Java-kode ved hjælp af RGB (rød, grøn, blå), RGBA (rød, grøn, blå, alpha) eller HSB (hue, saturation, BRI-komponenter). Klassen indeholder to værdier - skyggens kode og værdien af ​​opacitet/gennemsigtighed. Java.Awt.Color Class - 1Sådan erklærer du klasse java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
For at erklære forskellige typer farver ved hjælp af Class.java.awt.Color, bruger udviklere konstruktører - vi vil tage et kig på dem nu.

AWT.Color Constructors i Java

Afhængigt af parameteren for den farve, du vil oprette, skal du bruge en bestemt type farvekonstruktør. Der er en håndfuld af disse – lad os undersøge dem én efter én.
  • Color(float r, float g, float b)er den klasse, du bruger til at definere en farve i RGB-farveskemaet, der er uigennemsigtig. Du kan angive farveområdet hvor som helst mellem 0,0 og 0,1.
  • Color(float r, float b, float g, float a)er den klasse, der definerer en RGBA-farve (intervallet af tilgængelige værdier er 0,0 og 0,1).
  • Color(ColorSpace c, float[], co, float a)definerer en farve i det ColorSpace, du angiver på forhånd. En udvikler specificerer rækken af ​​farvekomponenter i float-arrayet af en defineret alfa.
  • Color(int, rgb)er en klasse, der skaber en RGB-farve (ugennemsigtig). Sørg for at være opmærksom på konstruktørens komponentværdi - 16-23 for rød, 8-15 for grøn, 0-7 for blå.
  • Color(int r, int g, int b)- en metode, der bruges til at definere en uigennemsigtig RGB-farve. Værdien af ​​farven skal ligge mellem 0 og 255.
  • Color(int r, int g, int b, int a)- opretter en farve i RGBA-skemaet (0-255).
  • Color(int rgba, boolean b)bruges til at skabe sRGB-farver inden for en defineret kombineret værdi. Værdiområdet spænder over 24-31 for alfa, 16-23 for rødt, 8-15 for grønt og 0-7 for blåt.
Bortset fra det, opererer class.awt.color med felterne, arvet fra Java.awt.Transparency:
  • TRANSLUCENTrepræsenterer, hvorvidt farven indeholder alfaværdier og har to værdier - 0 og 1.
  • OPAQUEtildeler alfaværdien 1 til objektet og garanterer det fuldstændig uigennemsigtighed.
  • BITMASKrepræsenterer den absolutte uigennemsigtighed eller gennemsigtighedsværdi og ligger inden for området (0;1), hvor 0 er fuld gennemsigtighed og 1 er ekstrem uigennemsigtighed.

Top 15 metoder til brug med Java AWT Color Class

For at manipulere en farve, justere dens mørke eller lysstyrke, er Java-udviklere afhængige af forskellige metoder. Der er snesevis af dem, så du behøver ikke at lære dem alle udenad. Men når det kommer til de mest udbredte Java AWT Color-metoder, har vi indsnævret listen til femten. At huske disse uden at skulle henvise til Java API-dokumentationen ville være nyttigt for udviklere.

mørkere()

Metoden bruges til at skabe en ny farve, der er en mørkere version af den farve, du allerede har defineret. Eksempel :

Color.green.darker()
Hvis påføring darker()én gang ikke er nok til at skabe en nuance, du har brug for, er du velkommen til at genanvende metoden så mange gange, du vil, som vist nedenfor:

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

lysere()

Som navnet antyder, Color brighter()bruges det til at lyse op i den nuance, du allerede har. På samme måde som darker(), kunne den bruges flere gange pr. enkelt farve. Eksempel :

Color myColor = Color.RED;          

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

int getAlpha()

Hvis du vil returnere alfa-komponenten i din farve, skal du bruge denne metode. Husk, at alfaværdier ligger inden for området 0-255. Her er eksemplet på metodens anvendelse og returnering. Eksempel :

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

statisk farve getColor(streng nm)

Java-udviklere kan bruge denne metode til at finde en farve ved hjælp af systemegenskaber. Der er andre metoder, der håndterer lignende mål:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

statisk farveafkodning (streng nm)

Denne metode bruges til at vise en farve som en streng. Efter konverteringen er fuldført, vil en udvikler få en defineret uigennemsigtig farve. Eksempel :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

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

Denne metode ser kompleks ud, men den er lettere at manipulere, end den ser ud til. Paint Context CreateContext()bruges til at definere et gentaget ensfarvet mønster. Eksempel :

 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)

Dette er en Java-metode, du kan anvende på en farve for at returnere dens float-array og alfa-komponenter. Metoden gælder for en given ColorSpacedefineret af cspace. Eksempel :

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

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

Java-udviklere kan bruge denne metode til at returnere farverum for en valgt farve. En anden måde at få et farverum for en given post er ved at anvende Arrays.to.String. Dette er en mere kompleks strategi, som det ses i eksemplet nedenfor: Eksempler :

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)

Java-udviklere anvender denne metode til at skabe et nyt farveobjekt baseret på værdierne i HSB-modellen. Eksempel :

 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()

Denne Java-metode returnerer værdien af ​​den grønne komponent for den farve, du har oprettet. Alle værdier passer inden for det område, der svarer til grønt i RGB-farveskemaet. Eksempel :

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

getRed()

På samme måde som getGreen()returnerer getRedværdien for den røde komponent i en given farve. Du har allerede set, hvordan metoden blev anvendt i eksemplet ovenfor.

getBlue()

Denne metode returnerer værdien af ​​blå inden for rækkevidden af ​​værdier i RGB-farveskemaet. Ligeledes, for eksempel på brug getBlue(), se beskrivelsen af getGreen()​​.

getAlpha()

GetAlpha() metoden bruges i Java, når en udvikler ønsker at finde alfaværdien af ​​en given farve. På samme måde som RBG ligger alfaerne for alle farver inden for området 0-255. Eksempel : her er, hvordan getAlpha()den blev brugt som en del af en loop.

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

getTransparency()

Denne metode returnerer den gennemsigtighedsværdi, du eller en anden udvikler har angivet for farven, da du oprettede den. Eksempel :

public int getTransparency() {

return myColor.getTransparency();

boolesk lig (Objekt obj)

Denne metode er yderst nyttig, hvis du sammenligner to farver med hinanden. Det lader Java-udviklere vide, om to farveobjekter har ens værdier. Eksempel :

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));
  }
}

er lig med (Objekt obj)

På samme måde som boolean equals(Object obj), er denne en sammenlignende metode. Vi bruger det til at bestemme, om farveobjekter er ens med hinanden. Eksempel :

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

Vejledning til hovedfarver, der bruges i Java

Nu hvor du har en forståelse af de metoder, der bruges til at manipulere farver i Java, lad os tage et kig på de felttyper, du vil arbejde med. Dette er de faktiske statiske farver Java-udviklere kan definere. Du kan enten definere en farve ved at indtaste dens navn (sørg for at indtaste den nøjagtigt som den er skrevet i den officielle dokumentation) eller ved at angive dens RGB-værdi. Lad os tage et kig på den paletudviklere bruger:
Feltnavn Beskrivelse
statisk farve sort (SORT) Definerer den sorte farve
statisk farve hvid (HVID) Definerer den hvide farve
statisk farve blå (BLÅ) Bruges til at definere blå
statisk farve grå (GRÅ) Definerer den grå farve
statisk farve mørkegrå (DARK_GRAY) Definerer en mørkere grå nuance
statisk farve lysegrå (LIGHT_GRAY) Definerer en lysere grå nuance
statisk farve grøn (GRØN) Bruges til at definere den grønne farve
statisk farve magenta (MAGENTA) Definerer den magentafarvede nuance
statisk farve pink (ROSA) Definerer pink i Java
statisk farve orange (ORANGE) Opretter den orange farve i Java
statisk farve gul (GUL) Bruges til at definere gul
statisk farve rød (RØD) Definerer rød farve i Java

Øv problemer med at bruge AWT.Color i Java

Føler du, at du har et solidt grundlag for AWT Color i Java? Lad os teste disse færdigheder ved at løse et par praktiske problemer - her skal du anvende konstruktører og almindelige metoder samt andre ikke-farve-relaterede Java-værktøjer. Øv opgave #1 . Opret en brugerdefineret komponent, der lader en programbruger justere RGB-niveauer i en farve (ligner RGBColorChooser). Sørg for at inkludere getColor() i dine komponenter. Gør komponenten til en Panel-underklasse, ikke en applet. Svar : dette er et ret komplekst problem - lad os dele det op i håndterbare trin:
  1. Konverter en RGBChoosertil en komponent.
  2. Tilføj en ny rutine til komponenten - getColor().
  3. Tilføj setColor()for at indstille farven.
Her er prøvekoden, du skal få sidst på dagen:

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

Konklusion

Tillykke, du er kommet igennem denne omfattende guide om AWT.Color i Java. Nu vil håndtering af grænseflader være meget nemmere. Glem ikke at anvende din viden ved at løse praksisproblemer og CodeGym-quizzer. Øvelse gør mester, så giv prøveproblemer dit bedste skud!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION