CodeGym /Java Blog /Willekeurig /Java.Awt.Color-klasse
John Squirrels
Niveau 41
San Francisco

Java.Awt.Color-klasse

Gepubliceerd in de groep Willekeurig
Als u Java Abstract Toolkit onder de knie heeft, zult u de toepassingen van Java AWT Color Class moeten leren kennen. Aangezien er veel constructeurs en methoden bij betrokken zijn, kan het in het begin intimiderend aanvoelen. Maar maak je geen zorgen, we hebben je gedekt:) Met dit volledige overzicht van Java AWT Color leer je hoe je een nieuw kleurtype kunt maken en dit in een mum van tijd kunt beheren. We zullen ook een aantal oefentests aanbieden die je zullen helpen je vaardigheden aan te scherpen.

Wat is AWT-kleurklasse in Java?

Het primaire doel van AWT Color is om ontwikkelaars in staat te stellen nieuwe kleuren te creëren met behulp van Java-code met behulp van RGB- (rood, groen, blauw), RGBA- (rood, groen, blauw, alfa) of HSB-pakketten (tint, verzadiging, BRI-componenten). De klasse bevat twee waarden: de code van de tint en de waarde van dekking/transparantie. Java.Awt.Color-klasse - 1Zo declareert u Class java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
Om verschillende soorten kleuren te declareren met behulp van Class.java.awt.Color, gebruiken ontwikkelaars constructors - we zullen ze nu bekijken.

AWT.Color-constructeurs in Java

Afhankelijk van de parameter van de kleur die u wilt maken, moet u een specifiek type kleurconstructor gebruiken. Er zijn er een handvol - laten we ze een voor een bekijken.
  • Color(float r, float g, float b)is de klasse die u gebruikt om een ​​kleur in het RGB-kleurenschema te definiëren die dekkend is. U kunt het kleurbereik ergens tussen 0,0 en 0,1 specificeren.
  • Color(float r, float b, float g, float a)is de klasse die een RGBA-kleur definieert (het bereik van beschikbare waarden is 0,0 en 0,1).
  • Color(ColorSpace c, float[], co, float a)definieert een kleur in de ColorSpace die u vooraf opgeeft. Een ontwikkelaar specificeert het bereik van kleurcomponenten in de float-array van een gedefinieerde alfa.
  • Color(int, rgb)is een klasse die een RGB-kleur creëert (ondoorzichtig). Let op de componentwaarde van de constructor - 16-23 voor rood, 8-15 voor groen, 0-7 voor blauw.
  • Color(int r, int g, int b)- een methode die wordt gebruikt om een ​​dekkende RGB-kleur te definiëren. De waarde van de kleur moet tussen 0 en 255 liggen.
  • Color(int r, int g, int b, int a)- creëert een kleur in het RGBA-schema (0-255).
  • Color(int rgba, boolean b)wordt gebruikt om sRGB-kleuren te creëren binnen een gedefinieerde gecombineerde waarde. Het bereik van waarden omvat 24-31 voor alfa, 16-23 voor rood, 8-15 voor groen en 0-7 voor blauw.
Anders dan dat, class.awt.color werkt met de velden, geërfd van Java.awt.Transparency:
  • TRANSLUCENTgeeft aan of de kleur alfawaarden bevat en twee waarden heeft: 0 en 1.
  • OPAQUEkent de alpha-waarde van 1 toe aan het object en garandeert volledige ondoorzichtigheid.
  • BITMASKvertegenwoordigt de absolute ondoorzichtigheid of transparantiewaarde en ligt binnen het bereik van (0;1) waarbij 0 volledige transparantie is en 1 extreme ondoorzichtigheid is.

Top 15 methoden om te gebruiken met Java AWT-kleurklasse

Om een ​​kleur te manipuleren, de duisternis of helderheid aan te passen, gebruiken Java-ontwikkelaars verschillende methoden. Er zijn er tientallen, dus je hoeft ze niet allemaal uit je hoofd te leren. Als het echter gaat om de meest gebruikte Java AWT-kleurmethoden, hebben we de lijst teruggebracht tot vijftien. Het zou nuttig zijn voor ontwikkelaars om deze te onthouden zonder naar de Java API-documentatie te hoeven verwijzen.

donkerder()

De methode wordt gebruikt om een ​​nieuwe kleur te creëren die een donkerdere versie is van de kleur die je al hebt gedefinieerd. Voorbeeld :

Color.green.darker()
Als één keer aanbrengen darker()niet genoeg is om de tint te creëren die je nodig hebt, voel je vrij om de methode zo vaak als je wilt opnieuw toe te passen, zoals hieronder getoond:

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

helderder()

Zoals de naam al doet vermoeden, Color brighter()wordt gebruikt om de schaduw die je al hebt op te fleuren. Net als darker(), kan het meerdere keren per enkele kleur worden gebruikt. Voorbeeld :

Color myColor = Color.RED;          

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

int getAlpha()

Gebruik deze methode als u de alfacomponent van uw kleur wilt retourneren. Houd er rekening mee dat alfawaarden binnen het bereik van 0-255 liggen. Hier is het voorbeeld van de toepassing en terugkeer van de methode. Voorbeeld :

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

statische Kleur getColor(String nm)

Java-ontwikkelaars kunnen deze methode gebruiken om een ​​kleur te vinden met behulp van systeemeigenschappen. Er zijn andere methoden die vergelijkbare doelstellingen hanteren:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

statische kleurdecodering (string nm)

Deze methode wordt gebruikt om een ​​kleur weer te geven als een tekenreeks. Nadat de conversie is voltooid, krijgt een ontwikkelaar een gedefinieerde ondoorzichtige kleur. Voorbeeld :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

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

Deze methode ziet er ingewikkeld uit, maar is gemakkelijker te manipuleren dan het lijkt. Paint Context CreateContext()wordt gebruikt om een ​​herhaald effen kleurenpatroon te definiëren. Voorbeeld :

 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)

Dit is een Java-methode die u op een kleur kunt toepassen om de float-array en alpha-componenten te retourneren. De methode is van toepassing op een gegeven ColorSpacegedefinieerd door cspace. Voorbeeld :

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

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

Java-ontwikkelaars kunnen deze methode gebruiken om de kleurruimte voor een gekozen kleur te retourneren. Een andere manier om een ​​kleurruimte voor een bepaald item te krijgen, is door Arrays.to.String toe te passen. Dit is een complexere strategie, zoals te zien is in het onderstaande voorbeeld: Voorbeelden :

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(zweven h, zweven s, zweven b)

Java-ontwikkelaars passen deze methode toe om een ​​nieuw kleurobject te maken op basis van de waarden van het HSB-model. Voorbeeld :

 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.

krijgGroen()

Deze Java-methode retourneert de waarde van de groene component voor de kleur die u hebt gemaakt. Alle waarden passen binnen het bereik dat overeenkomt met groen in het RGB-kleurenschema. Voorbeeld :

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

word rood()

Vergelijkbaar met getGreen(), getRedretourneert de waarde voor de rode component van een bepaalde kleur. In bovenstaand voorbeeld heb je al gezien hoe de methode werd toegepast.

krijgblauw()

Deze methode retourneert de waarde van blauw binnen het waardenbereik van het RGB-kleurenschema. Zie ook getBlue()de beschrijving van voor het voorbeeld van het gebruik van getGreen().

krijgAlfa()

De methode getAlpha() wordt in Java gebruikt wanneer een ontwikkelaar de alpha-waarde van een bepaalde kleur wil vinden. Net als bij RBG liggen de alfa's van alle kleuren binnen het bereik van 0-255. Voorbeeld : hier is hoe getAlpha()werd gebruikt als onderdeel van een lus.

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

getTransparantie()

Deze methode retourneert de transparantiewaarde die u of een andere ontwikkelaar voor de kleur heeft opgegeven bij het maken ervan. Voorbeeld :

public int getTransparency() {

return myColor.getTransparency();

boolean is gelijk aan (Object object)

Deze methode is erg handig als u twee kleuren met elkaar vergelijkt. Het laat Java-ontwikkelaars weten of twee kleurobjecten gelijke waarden hebben. Voorbeeld :

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

is gelijk aan (Object object)

Vergelijkbaar met boolean equals(Object obj), deze is een vergelijkende methode. We gebruiken het om te bepalen of kleurobjecten aan elkaar gelijk zijn. Voorbeeld :

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

Gids voor de belangrijkste kleuren die in Java worden gebruikt

Nu u de methoden begrijpt die worden gebruikt om kleuren in Java te manipuleren, gaan we kijken naar de veldtypen waarmee u gaat werken. Dit zijn de daadwerkelijke statische kleuren die Java-ontwikkelaars kunnen definiëren. U kunt een kleur definiëren door de naam in te voeren (zorg ervoor dat u deze precies invoert zoals deze in de officiële documentatie is geschreven) of door de RGB-waarde op te geven. Laten we eens kijken naar het palet dat ontwikkelaars gebruiken:
Veldnaam Beschrijving
statische kleur zwart (ZWART) Definieert de zwarte kleur
statische kleur wit (WHITE) Definieert de witte kleur
statische kleur blauw (BLAUW) Wordt gebruikt om blauw te definiëren
statische kleur grijs (GRIJS) Definieert de grijze kleur
statische kleur donkergrijs (DARK_GRAY) Definieert een donkerdere grijstint
statische kleur lichtgrijs (LIGHT_GRAY) Definieert een lichtere grijstint
statische kleur groen (GROEN) Wordt gebruikt om de groene kleur te definiëren
statisch Kleur magenta (MAGENTA) Definieert de magenta tint
statisch Kleur roze (PINK) Definieert roze in Java
statisch Kleur oranje (ORANJE) Creëert de oranje kleur in Java
statisch Kleur geel (GEEL) Wordt gebruikt om geel te definiëren
statisch Kleur rood (ROOD) Definieert rode kleur in Java

Oefenproblemen voor het gebruik van AWT.Color in Java

Heb je het gevoel dat je een solide basis hebt van AWT Color in Java? Laten we deze vaardigheden testen door een paar praktische problemen op te lossen - hier moet u constructors en algemene methoden toepassen, evenals andere niet-kleurgerelateerde Java-tools. Oefen opgave #1 . Maak een aangepaste component waarmee een programmagebruiker RGB-niveaus in een kleur kan aanpassen (vergelijkbaar met RGBColorChooser). Zorg ervoor dat u getColor() in uw componenten opneemt. Maak van de component een Panel-subklasse, geen applet. Antwoord : dit is een vrij complex probleem - laten we het opsplitsen in beheersbare stappen:
  1. Converteer een RGBChoosernaar een component.
  2. Voeg een nieuwe routine toe aan de component - getColor().
  3. Toevoegen setColor()om de kleur in te stellen.
Dit is de voorbeeldcode die u aan het einde van de dag zou moeten krijgen:

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

Conclusie

Gefeliciteerd, je hebt deze uitgebreide gids over AWT.Color in Java doorgenomen. Nu zal het omgaan met interfaces veel eenvoudiger zijn. Vergeet niet je kennis toe te passen door oefenproblemen en CodeGym-quizzen op te lossen. Oefening baart kunst, dus geef voorbeeldproblemen uw beste kans!
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION