CodeGym /Java-blogg /Tilfeldig /Java.Awt.Color Class
John Squirrels
Nivå
San Francisco

Java.Awt.Color Class

Publisert i gruppen
Hvis du mestrer Java Abstract Toolkit, må du lære applikasjonene til Java AWT Color Class. Siden det er mange konstruktører og metoder involvert, kan det føles skremmende i begynnelsen. Men ingen grunn til bekymring, vi har dekket deg:) Med denne fullstendige oversikten over Java AWT Color, lærer du hvordan du lager en ny fargetype og administrerer den på kort tid. Vi vil også tilby et par øvelsestester som vil hjelpe deg å finpusse ferdighetene dine.

Hva er AWT Color Class i Java?

Hovedformålet med AWT Color er å la utviklere lage nye farger ved å bruke Java-kode ved å bruke RGB (rød, grønn, blå), RGBA (rød, grønn, blå, alfa) eller HSB (hue, saturation, BRI-komponenter). Klassen inneholder to verdier - koden til skyggen og verdien av opasitet/transparens. Java.Awt.Color Class - 1Slik erklærer du klasse java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
For å deklarere forskjellige typer farger ved å bruke Class.java.awt.Color, bruker utviklere konstruktører - vi skal ta en titt på dem nå.

AWT.Color Constructors i Java

Avhengig av parameteren til fargen du vil lage, må du bruke en bestemt type fargekonstruktør. Det er en håndfull av disse - la oss undersøke dem én etter én.
  • Color(float r, float g, float b)er klassen du bruker til å definere en farge i RGB-fargeskjemaet som er ugjennomsiktig. Du kan spesifisere fargeområdet hvor som helst mellom 0,0 og 0,1.
  • Color(float r, float b, float g, float a)er klassen som definerer en RGBA-farge (området av tilgjengelige verdier er 0,0 og 0,1).
  • Color(ColorSpace c, float[], co, float a)definerer en farge i ColorSpace du angir på forhånd. En utvikler spesifiserer rekkevidden av fargekomponenter i flytematrisen til en definert alfa.
  • Color(int, rgb)er en klasse som lager en RGB-farge (ugjennomsiktig). Sørg for å ta hensyn til komponentverdien til konstruktøren - 16-23 for rødt, 8-15 for grønt, 0-7 for blått.
  • Color(int r, int g, int b)- en metode som brukes til å definere en ugjennomsiktig RGB-farge. Verdien på fargen skal ligge mellom 0 og 255.
  • Color(int r, int g, int b, int a)- oppretter en farge i RGBA-skjemaet (0-255).
  • Color(int rgba, boolean b)brukes til å lage sRGB-farger innenfor en definert kombinert verdi. Verdiområdet spenner fra 24–31 for alfa, 16–23 for rødt, 8–15 for grønt og 0–7 for blått.
Annet enn det opererer class.awt.color med feltene, arvet fra Java.awt.Transparency:
  • TRANSLUCENTrepresenterer hvorvidt fargen inneholder alfaverdier og har to verdier - 0 og 1.
  • OPAQUEtildeler alfaverdien 1 til objektet og garanterer at det er fullstendig ugjennomsiktig.
  • BITMASKrepresenterer den absolutte ugjennomsiktighets- eller transparensverdien og ligger innenfor området (0;1) der 0 er full gjennomsiktighet og 1 er ekstrem ugjennomsiktighet.

Topp 15 metoder for bruk med Java AWT Color Class

For å manipulere en farge, justere dens mørke eller lysstyrke, stoler Java-utviklere på forskjellige metoder. Det er dusinvis av dem, så du trenger ikke å lære dem alle utenat. Men når det kommer til de mest brukte Java AWT Color-metodene, begrenset vi listen til femten. Å huske disse uten å måtte referere til Java API-dokumentasjonen vil være nyttig for utviklere.

mørkere()

Metoden brukes til å lage en ny farge som er en mørkere versjon av fargen du allerede har definert. Eksempel :

Color.green.darker()
Hvis påføring darker()en gang ikke er nok til å lage en nyanse du trenger, bruk gjerne metoden på nytt så mange ganger du vil, som vist nedenfor:

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

lysere()

Som navnet antyder, Color brighter()brukes til å lyse opp nyansen du allerede har. På samme måte som darker()kan den brukes flere ganger per enkelt farge. Eksempel :

Color myColor = Color.RED;          

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

int getAlpha()

Hvis du vil returnere alfakomponenten til fargen din, bruk denne metoden. Husk at alfaverdier ligger innenfor området 0-255. Her er eksempelet på metodens anvendelse og retur. Eksempel :

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

statisk farge getColor(streng nm)

Java-utviklere kan bruke denne metoden til å finne en farge ved å bruke systemegenskaper. Det finnes andre metoder som håndterer lignende mål:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

statisk fargedekoding (streng nm)

Denne metoden brukes vise en farge som en streng. Etter at konverteringen er fullført, vil en utvikler få en definert ugjennomsiktig farge. Eksempel :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

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

Denne metoden ser kompleks ut, men den er lettere å manipulere enn den ser ut til. Paint Context CreateContext()brukes til å definere et gjentatt ensfarget 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 bruke på en farge for å returnere dens float-array og alfa-komponenter. Metoden gjelder for en gitt ColorSpacedefinert av cspace. Eksempel :

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

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

Java-utviklere kan bruke denne metoden til å returnere fargerommet for en valgt farge. En annen måte å få et fargerom for en gitt oppføring er ved å bruke Arrays.to.String. Dette er en mer kompleks strategi, som vist 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-utviklere bruker denne metoden for å lage et nytt fargeobjekt basert på verdiene til 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-metoden returnerer verdien til den grønne komponenten for fargen du opprettet. Alle verdiene passer innenfor området som tilsvarer grønt i RGB-fargeskjemaet. Eksempel :

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

getRed()

På samme måte som getGreen()returnerer getRedverdien for den røde komponenten i en gitt farge. Du har allerede sett hvordan metoden ble brukt i eksemplet ovenfor.

getBlue()

Denne metoden returnerer verdien av blått innenfor verdiområdet til RGB-fargeskjemaet. På samme måte, for eksempel på bruk getBlue(), se beskrivelsen av getGreen().

getAlpha()

GetAlpha()-metoden brukes i Java når en utvikler ønsker å finne alfaverdien til en gitt farge. På samme måte som RBG ligger alfaene til alle farger innenfor området 0-255. Eksempel : her er hvordan getAlpha()ble brukt som en del av en loop.

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

getTransparency()

Denne metoden returnerer gjennomsiktighetsverdien du eller en annen utvikler har spesifisert for fargen da du opprettet den. Eksempel :

public int getTransparency() {

return myColor.getTransparency();

boolsk lik(Objekt obj)

Denne metoden er svært nyttig hvis du sammenligner to farger med hverandre. Den lar Java-utviklere vite om to fargeobjekter har like verdier. 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));
  }
}

lik (Objekt objekt)

På samme måte som boolean equals(Object obj), er denne en komparativ metode. Vi bruker den til å finne ut om fargeobjekter er like med hverandre. Eksempel :

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

Veiledning til hovedfarger som brukes i Java

Nå som du har en forståelse av metodene som brukes til å manipulere farger i Java, la oss ta en titt på felttypene du skal jobbe med. Dette er de faktiske statiske fargene Java-utviklere kan definere. Du kan enten definere en farge ved å skrive inn navnet (sørg for at du skriver den inn nøyaktig slik den er skrevet i offisiell dokumentasjon) eller spesifisere RGB-verdien. La oss ta en titt på palettutviklerne bruker:
Feltnavn Beskrivelse
statisk farge svart (SVART) Definerer den svarte fargen
statisk farge hvit (HVIT) Definerer den hvite fargen
statisk farge blå (BLÅ) Brukes til å definere blått
statisk farge grå (GRÅ) Definerer den grå fargen
statisk farge mørkegrå (DARK_GRAY) Definerer en mørkere gråtone
statisk farge lysgrå (LIGHT_GRAY) Definerer en lysere gråtone
statisk farge grønn (GRØNN) Brukes til å definere den grønne fargen
statisk farge magenta (MAGENTA) Definerer magentafargen
statisk farge rosa (ROSA) Definerer rosa i Java
statisk farge oransje (ORANSJE) Skaper den oransje fargen i Java
statisk Farge gul (GUL) Brukes til å definere gul
statisk farge rød (RØD) Definerer rød farge i Java

Øv problemer for bruk av AWT.Color i Java

Føler du at du har et solid grunnlag for AWT Color i Java? La oss teste disse ferdighetene ved å løse noen få praktiske problemer - her må du bruke konstruktører og vanlige metoder, samt andre ikke-fargerelaterte Java-verktøy. Øv på problem #1 . Lag en egendefinert komponent som lar en programbruker justere RGB-nivåer i en farge (ligner på RGBColorChooser). Sørg for å inkludere getColor() i komponentene dine. Gjør komponenten til en Panel-underklasse, ikke en applet. Svar : dette er et ganske komplekst problem - la oss dele det ned i håndterbare trinn:
  1. Konverter en RGBChoosertil en komponent.
  2. Legg til en ny rutine til komponenten - getColor().
  3. Legg til setColor()for å angi fargen.
Her er eksempelkoden du bør få på slutten 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

Konklusjon

Gratulerer, du har kommet deg gjennom denne omfattende veiledningen om AWT.Color i Java. Nå vil håndtering av grensesnitt bli mye enklere. Ikke glem å bruke kunnskapen din ved å løse praksisproblemer og CodeGym-quizer. Øvelse gjør mester, så gi prøveproblemene ditt beste!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION