CodeGym /Java blog /Véletlen /Java.Awt.Color osztály
John Squirrels
Szint
San Francisco

Java.Awt.Color osztály

Megjelent a csoportban
Ha elsajátítja a Java Abstract Toolkit, akkor meg kell tanulnia a Java AWT Color Class alkalmazásait. Mivel nagyon sok konstruktor és módszerről van szó, elsőre félelmetesnek tűnhet. De ne aggódj, mi mindent megtalálsz:) A Java AWT Color teljes leírásával megtanulhatja, hogyan hozhat létre új színtípust, és hogyan kezelheti azt pillanatok alatt. Néhány gyakorló tesztet is kínálunk, amelyek segítenek fejleszteni tudását.

Mi az AWT Color Class a Java-ban?

Az AWT Color elsődleges célja, hogy a fejlesztők új színeket hozzanak létre Java kód segítségével RGB (piros, zöld, kék), RGBA (piros, zöld, kék, alfa) vagy HSB (színárnyalat, telítettség, BRI komponensek) csomagokkal. Az osztály két értéket tartalmaz - az árnyék kódját és az átlátszatlanság/átlátszóság értékét. Java.Awt.Color osztály – 1Így deklarálhatja a java.awt.Color osztályt:

public class Color
   extends Object
      implements Paint, Serializable
A különböző színtípusok Class.java.awt.Color használatával deklarálásához a fejlesztők konstruktorokat használnak – most ezeket nézzük meg.

AWT.Color konstruktorok Java nyelven

A létrehozni kívánt szín paraméterétől függően egy adott típusú színkonstruktort kell használnia. Ezekből van egy maroknyi – vizsgáljuk meg őket egyenként.
  • Color(float r, float g, float b)az az osztály, amelyet az RGB színséma átlátszatlan színének meghatározására használ. A színtartományt 0,0 és 0,1 között bárhol megadhatja.
  • Color(float r, float b, float g, float a)az az osztály, amely meghatároz egy RGBA színt (az elérhető értékek tartománya 0,0 és 0,1).
  • Color(ColorSpace c, float[], co, float a)meghatároz egy színt az előzetesen megadott ColorSpace-ben. A fejlesztő határozza meg a színösszetevők tartományát egy meghatározott alfa float tömbjében.
  • Color(int, rgb)egy RGB színt (átlátszatlan) létrehozó osztály. Ügyeljen a konstruktor komponens értékére - 16-23 a piros, 8-15 a zöld, 0-7 a kék.
  • Color(int r, int g, int b)- átlátszatlan RGB szín meghatározására használt módszer. A szín értékének 0 és 255 között kell lennie.
  • Color(int r, int g, int b, int a)- színt hoz létre az RGBA sémában (0-255).
  • Color(int rgba, boolean b)sRGB színek létrehozására szolgál egy meghatározott kombinált értéken belül. Az értékek tartománya 24-31 az alfa, 16-23 a piros, 8-15 a zöld és 0-7 a kék.
Ettől eltekintve a class.awt.color a következő mezőkkel működik Java.awt.Transparency:
  • TRANSLUCENTazt jelzi, hogy a szín tartalmaz-e alfa értékeket, és két értéke van - 0 és 1.
  • OPAQUEaz 1-es alfa-értéket rendeli az objektumhoz, garantálva annak teljes átlátszatlanságát.
  • BITMASKaz abszolút átlátszatlanságot vagy átlátszóságot jelöli, és a (0;1) tartományba esik, ahol a 0 a teljes átlátszóságot, az 1 pedig a szélsőséges átlátszatlanságot jelenti.

A 15 legjobb módszer a Java AWT színosztályhoz

A színek manipulálásához, sötétségének vagy fényerejének beállításához a Java fejlesztők különböző módszerekre támaszkodnak. Több tucat ilyen van, így nem kell mindegyiket fejből megtanulni. Ha azonban a legszélesebb körben használt Java AWT Color metódusokról van szó, a listát tizenötre szűkítettük. A fejlesztők számára hasznos lenne, ha megjegyezné ezeket a Java API dokumentációra való hivatkozás nélkül.

sötétebb ()

Ez a módszer egy új szín létrehozására szolgál, amely a már meghatározott szín sötétebb változata. Példa :

Color.green.darker()
Ha darker()az egyszeri felhordás nem elég a kívánt árnyalat létrehozásához, bátran alkalmazza újra a módszert, ahányszor csak akarja, az alábbiak szerint:

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

fényesebb ()

Ahogy a neve is sugallja, Color brighter()a már meglévő árnyalat élénkítésére szolgál. Hasonlóan a -hoz darker(), többször is használható színenként. Példa :

Color myColor = Color.RED;          

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

int getAlpha()

Ha vissza szeretné adni a szín alfa-komponensét, használja ezt a módszert. Ne feledje, hogy az alfa értékek a 0-255 tartományban vannak. Íme a példa a metódus alkalmazására és visszatérésére. Példa :

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

statikus szín getColor (karakterlánc nm)

A Java fejlesztők ezt a módszert használhatják a színek rendszertulajdonságok segítségével történő megkeresésére. Vannak más módszerek is a hasonló célok kezelésére:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

statikus színdekódolás (karakterlánc nm)

Ezt a módszert használják egy szín megjelenítésére karakterláncként. Az átalakítás befejezése után a fejlesztő meghatározott átlátszatlan színt kap. Példa :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

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

Ez a módszer bonyolultnak tűnik, de könnyebben manipulálható, mint amilyennek látszik. Paint Context CreateContext()ismétlődő egyszínű minta meghatározására szolgál. Példa :

 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)

Ez egy Java-módszer, amelyet egy színre alkalmazhat, hogy visszaadja a float tömböt és az alfa-komponenseket. A metódus a cspace által meghatározott adottra vonatkozik ColorSpace. Példa :

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

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

A Java fejlesztők ezzel a módszerrel visszaadhatják a színteret egy kiválasztott színhez. Egy másik módja annak, hogy színteret kapjunk egy adott bejegyzéshez, az Arrays.to.String alkalmazása. Ez egy összetettebb stratégia, amint az az alábbi példában látható: Példák :

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

getHSBCColor(float h, float s, float b)

A Java fejlesztők ezzel a módszerrel új színobjektumot hoznak létre a HSB modell értékei alapján. Példa :

 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.

get Green()

Ez a Java metódus a zöld összetevő értékét adja vissza a létrehozott színhez. Az összes érték belefér az RGB színséma zöldjének megfelelő tartományba. Példa :

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

getRed()

Hasonlóan a -hoz getGreen(), getRedegy adott szín vörös összetevőjének értékét adja vissza. A fenti példában már láthatta, hogyan alkalmazták a módszert.

getBlue()

Ez a módszer a kék értékét adja vissza az RGB színséma értéktartományán belül. Hasonlóképpen, a használat példáját getBlue()lásd a leírásában getGreen().

getAlpha()

A getAlpha() metódust Java-ban használják, amikor a fejlesztő meg akarja találni egy adott szín alfa értékét. Az RBG-hez hasonlóan az összes szín alfája a 0-255 tartományban van. Példa : a következőképpen getAlpha()használták a ciklus részeként.

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

getTransparency()

Ez a módszer azt az átlátszósági értéket adja vissza, amelyet Ön vagy egy másik fejlesztő adott meg a színhez annak létrehozásakor. Példa :

public int getTransparency() {

return myColor.getTransparency();

logikai egyenlő (Object Obj)

Ez a módszer nagyon hasznos, ha két színt hasonlít össze egymással. Lehetővé teszi a Java fejlesztők számára, hogy tudják, hogy két színes objektum azonos értékű-e. Példa :

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

egyenlő (objektum objektum)

A -hoz hasonlóan boolean equals(Object obj)ez is egy összehasonlító módszer. Használjuk annak meghatározására, hogy a színes objektumok egyenlőek-e egymással. Példa :

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

Útmutató a Java-ban használt fő színekhez

Most, hogy megértette a Java színek manipulálására használt módszereket, vessünk egy pillantást a mezőtípusokra, amelyekkel dolgozni fog. Ezek azok a tényleges statikus színek, amelyeket a Java fejlesztők meghatározhatnak. Meghatározhat egy színt a nevének megadásával (győződjön meg róla, hogy pontosan úgy adja meg, ahogy a hivatalos dokumentációban van), vagy megadhatja az RGB értékét. Vessünk egy pillantást a palettafejlesztők által használt palettafejlesztőkre:
Mező neve Leírás
statikus szín fekete (FEKETE) Meghatározza a fekete színt
statikus fehér szín (FEHÉR) Meghatározza a fehér színt
statikus kék szín (KÉK) A kék meghatározására szolgál
statikus szín szürke (GREY) Meghatározza a szürke színt
statikus szín sötétszürke (DARK_GRAY) A szürke sötétebb árnyalatát határozza meg
statikus szín világosszürke (LIGHT_GRAY) A szürke világosabb árnyalatát határozza meg
statikus zöld szín (GREEN) A zöld szín meghatározására szolgál
statikus szín bíbor (MAGENTA) Meghatározza a bíbor árnyalatot
statikus Szín rózsaszín (PINK) A rózsaszínt határozza meg a Java nyelven
statikus szín narancssárga (ORANGE) Létrehozza a narancssárga színt a Java nyelven
statikus Szín sárga (SÁRGA) A sárga meghatározására szolgál
statikus szín piros (PIROS) A vörös színt határozza meg a Java nyelven

Gyakorlati problémák az AWT.Color használatához Java nyelven

Úgy érzi, szilárd alapja van az AWT Color Java nyelven? Teszteljük ezeket a készségeket néhány gyakorlati probléma megoldásával – itt konstruktorokat és gyakori módszereket, valamint egyéb, nem színhez kapcsolódó Java-eszközöket kell alkalmaznia. 1. gyakorlati probléma . Hozzon létre egy egyéni összetevőt, amely lehetővé teszi a program felhasználója számára az RGB-szintek beállítását egy színben (hasonlóan a -hoz RGBColorChooser). Ügyeljen arra, hogy a getColor() függvényt tartalmazza az összetevők között. Legyen az összetevő Panel alosztály, ne kisalkalmazás. Válasz : ez egy meglehetősen összetett probléma – bontsuk le kezelhető lépésekre:
  1. Konvertálja RGBChoosera komponenst.
  2. Új rutin hozzáadása a - komponenshez getColor().
  3. Hozzáadás setColor()a szín beállításához.
Íme a mintakód, amelyet a nap végén meg kell kapnia:

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

Következtetés

Gratulálunk! A Java nyelven készült AWT.Color részletes útmutatóját már átvette. Most sokkal könnyebb lesz az interfészek kezelése. Ne felejtse el alkalmazni tudását gyakorlati feladatok és CodeGym kvízek megoldásában. Gyakorlás teszi a mestert, így adjon mintaproblémákat a legjobban!
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION