CodeGym /Java blogg /Slumpmässig /Java.Awt.Color Class
John Squirrels
Nivå
San Francisco

Java.Awt.Color Class

Publicerad i gruppen
Om du behärskar Java Abstract Toolkit måste du lära dig applikationerna för Java AWT Color Class. Eftersom det finns många konstruktörer och metoder inblandade kan det kännas skrämmande till en början. Men oroa dig inte, vi har täckt dig:) Med denna fullständiga genomgång av Java AWT Color kommer du att lära dig hur du skapar en ny färgtyp och hanterar den på nolltid. Vi kommer också att erbjuda ett par övningsprov som hjälper dig att finslipa din skicklighet.

Vad är AWT Color Class i Java?

Det primära syftet med AWT Color är att tillåta utvecklare att skapa nya färger med hjälp av Java-kod med RGB (röd, grön, blå), RGBA (röd, grön, blå, alfa) eller HSB (nyans, mättnad, BRI-komponenter). Klassen innehåller två värden - skuggans kod och värdet för opacitet/transparens. Java.Awt.Color Class - 1Så här deklarerar du klass java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
För att deklarera olika typer av färger med Class.java.awt.Color använder utvecklare konstruktörer - vi ska ta en titt på dem nu.

AWT.Color Constructors i Java

Beroende på parametern för färgen du vill skapa, måste du använda en specifik typ av färgkonstruktor. Det finns en handfull av dessa - låt oss undersöka dem en efter en.
  • Color(float r, float g, float b)är den klass du använder för att definiera en färg i RGB-färgschemat som är ogenomskinlig. Du kan ange färgintervallet var som helst mellan 0,0 och 0,1.
  • Color(float r, float b, float g, float a)är klassen som definierar en RGBA-färg (intervallet för tillgängliga värden är 0,0 och 0,1).
  • Color(ColorSpace c, float[], co, float a)definierar en färg i ColorSpace som du anger i förväg. En utvecklare anger omfånget av färgkomponenter i float-arrayen för en definierad alfa.
  • Color(int, rgb)är en klass som skapar en RGB-färg (opak). Se till att vara uppmärksam på komponentvärdet för konstruktorn - 16-23 för rött, 8-15 för grönt, 0-7 för blått.
  • Color(int r, int g, int b)- en metod som används för att definiera en ogenomskinlig RGB-färg. Värdet på färgen bör ligga mellan 0 och 255.
  • Color(int r, int g, int b, int a)- skapar en färg i RGBA-schemat (0-255).
  • Color(int rgba, boolean b)används för att skapa sRGB-färger inom ett definierat kombinerat värde. Värdeintervallet sträcker sig över 24-31 för alfa, 16-23 för rött, 8-15 för grönt och 0-7 för blått.
I övrigt fungerar class.awt.color med fälten, ärvda från Java.awt.Transparency:
  • TRANSLUCENTrepresenterar om färgen innehåller alfavärden eller inte och har två värden - 0 och 1.
  • OPAQUEtilldelar alfavärdet 1 till objektet vilket garanterar att det är fullständigt ogenomskinligt.
  • BITMASKrepresenterar det absoluta ogenomskinlighets- eller transparensvärdet och ligger inom intervallet (0;1) där 0 är full transparens och 1 är extrem ogenomskinlighet.

Topp 15 metoder att använda med Java AWT Color Class

För att manipulera en färg, justera dess mörker eller ljusstyrka förlitar sig Java-utvecklare på olika metoder. Det finns dussintals av dem så du behöver inte lära dig alla utantill. Men när det kommer till de mest använda Java AWT Color-metoderna, minskade vi listan till femton. Att komma ihåg dessa utan att behöva referera till Java API-dokumentationen skulle vara till hjälp för utvecklare.

mörkare()

Metoden används för att skapa en ny färg som är en mörkare version av den färg du redan har definierat. Exempel :

Color.green.darker()
Om darker()det inte räcker att applicera en gång för att skapa en nyans du behöver, applicera gärna metoden igen så många gånger du vill, som visas nedan:

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

ljusare()

Som namnet antyder, Color brighter()används för att lysa upp den nyans du redan har. På samma sätt som darker()kan den användas flera gånger per enskild färg. Exempel :

Color myColor = Color.RED;          

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

int getAlpha()

Om du vill returnera alfakomponenten i din färg, använd den här metoden. Tänk på att alfavärdena ligger inom intervallet 0-255. Här är ett exempel på metodens tillämpning och retur. Exempel :

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

statisk färg getColor(String nm)

Java-utvecklare kan använda den här metoden för att hitta en färg med hjälp av systemegenskaper. Det finns andra metoder som hanterar liknande mål:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

statisk färgavkodning (sträng nm)

Denna metod används för att visa en färg som en sträng. När konverteringen är klar kommer en utvecklare att få en definierad ogenomskinlig färg. Exempel :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

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

Den här metoden ser komplex ut men den är lättare att manipulera än den verkar. Paint Context CreateContext()används för att definiera ett upprepat enfärgat mönster. Exempel :

 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)

Detta är en Java-metod som du kan tillämpa på en färg för att returnera dess float-array och alfakomponenter. Metoden gäller för en given ColorSpacedefinierad av cspace. Exempel :

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

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

Java-utvecklare kan använda den här metoden för att returnera färgrymden för en vald färg. Ett annat sätt att få en färgrymd för en given post är att använda Arrays.to.String. Detta är en mer komplex strategi, som visas i exemplet nedan: Exempel :

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-utvecklare använder den här metoden för att skapa ett nytt färgobjekt baserat på HSB-modellens värden. Exempel :

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

Den här Java-metoden returnerar värdet för den gröna komponenten för färgen du skapade. Alla värden passar inom det område som motsvarar grönt i RGB-färgschemat. Exempel :

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

getRed()

På samma sätt som returnerar värdet för den röda komponenten i en given färg getGreen(). getRedDu har redan sett hur metoden tillämpades i exemplet ovan.

getBlue()

Den här metoden returnerar värdet för blått inom värdeintervallet för RGB-färgschemat. På samma sätt, för exemplet att använda getBlue(), se beskrivningen av getGreen().

getAlpha()

Metoden getAlpha() används i Java när en utvecklare vill hitta alfavärdet för en given färg. På samma sätt som RBG ligger alfasorden för alla färger inom intervallet 0-255. Exempel : så här getAlpha()användes som en del av en loop.

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

getTransparency()

Den här metoden returnerar det transparensvärde som du eller en annan utvecklare har angett för färgen när du skapade den. Exempel :

public int getTransparency() {

return myColor.getTransparency();

boolesk lika med(Objekt obj)

Denna metod är mycket användbar om du jämför två färger med varandra. Det låter Java-utvecklare veta om två färgobjekt har lika värden. Exempel :

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

lika (Objekt objekt)

På samma sätt som , boolean equals(Object obj)den här är en jämförande metod. Vi använder den för att avgöra om färgobjekt är lika med varandra. Exempel :

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

Guide till huvudfärger som används i Java

Nu när du har en förståelse för metoderna som används för att manipulera färger i Java, låt oss ta en titt på fälttyperna du kommer att arbeta med. Det här är de faktiska statiska färgerna som Java-utvecklare kan definiera. Du kan antingen definiera en färg genom att ange dess namn (se till att du anger den exakt som den är skriven i den officiella dokumentationen) eller specificera dess RGB-värde. Låt oss ta en titt på palettutvecklarnas användning:
Fält namn Beskrivning
statisk färg svart (SVART) Definierar den svarta färgen
statisk färg vit (VIT) Definierar den vita färgen
statisk färg blå (BLÅ) Används för att definiera blått
statisk färg grå (GRÅ) Definierar den grå färgen
statisk färg mörkgrå (DARK_GRAY) Definierar en mörkare nyans av grått
statisk färg ljusgrå (LIGHT_GRAY) Definierar en ljusare nyans av grått
statisk färg grön (GRÖN) Används för att definiera den gröna färgen
statisk färg magenta (MAGENTA) Definierar den magentafärgade nyansen
statisk färg rosa (ROSA) Definierar rosa i Java
statisk färg orange (ORANGE) Skapar den orange färgen i Java
statisk Färg gul (GUL) Används för att definiera gult
statisk färg röd (RÖD) Definierar röd färg i Java

Öva problem för att använda AWT.Color i Java

Känner du att du har en solid grund för AWT Color i Java? Låt oss testa dessa färdigheter genom att lösa några praktiska problem - här måste du tillämpa konstruktörer och vanliga metoder, såväl som andra icke-färgrelaterade Java-verktyg. Öva problem #1 . Skapa en anpassad komponent som låter en programanvändare justera RGB-nivåer i en färg (liknande ) RGBColorChooser. Se till att inkludera getColor() i dina komponenter. Gör komponenten till en panelunderklass, inte en applet. Svar : det här är ett ganska komplext problem - låt oss dela upp det i hanterbara steg:
  1. Konvertera en RGBChoosertill en komponent.
  2. Lägg till en ny rutin till komponenten - getColor().
  3. Lägg till setColor()för att ställa in färgen.
Här är exempelkoden du bör få i slutet av 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

Slutsats

Grattis, du har tagit dig igenom den här omfattande guiden om AWT.Color i Java. Nu blir det mycket lättare att hantera gränssnitt. Glöm inte att tillämpa dina kunskaper genom att lösa övningsproblem och CodeGym-quiz. Övning ger färdighet så ge provproblem ditt bästa skott!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION