CodeGym /Java блог /Случаен /Java.Awt.Color клас
John Squirrels
Ниво
San Francisco

Java.Awt.Color клас

Публикувано в групата
Ако овладявате Java Abstract Toolkit, ще трябва да научите applicationsта на Java AWT Color Class. Тъй като има много включени конструктори и методи, в началото може да изглежда смущаващо. Но без притеснения, ние ви покрихме:) С това пълно описание на Java AWT Color ще научите How да създадете нов тип цвят и да го управлявате за нула време. Ще предложим и няколко практически теста, които ще ви помогнат да усъвършенствате уменията си.

Какво е цветен клас AWT в Java?

Основната цел на AWT Color е да позволи на разработчиците да създават нови цветове с помощта на Java code с помощта на пакети RGB (червено, зелено, синьо), RGBA (червено, зелено, синьо, алфа) or HSB (нюанс, наситеност, BRI компоненти). Класът съдържа две стойности - codeа на нюанса и стойността на opacity/transparency. Java.Awt.Color клас - 1Ето How декларирате клас java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
За да декларират различни видове цветове с помощта на Class.java.awt.Color, разработчиците използват конструктори - сега ще ги разгледаме.

AWT.Color конструктори в Java

В зависимост от параметъра на цвета, който искате да създадете, ще трябва да използвате конкретен тип цветен конструктор. Има няколко от тях - нека ги разгледаме един по един.
  • Color(float r, float g, float b)е класът, който използвате, за да дефинирате цвят в RGB цветовата схема, който е непрозрачен. Можете да посочите цветовия диапазон навсякъде между 0,0 и 0,1.
  • Color(float r, float b, float g, float a)е класът, който дефинира RGBA цвят (обхватът на наличните стойности е 0.0 и 0.1).
  • Color(ColorSpace c, float[], co, float a)дефинира цвят в предварително зададеното от вас ColorSpace. Разработчикът определя диапазона от цветови компоненти в плаващия масив на дефинирана алфа.
  • Color(int, rgb)е клас, създаващ RGB цвят (непрозрачен). Не забравяйте да обърнете внимание на стойността на компонента на конструктора - 16-23 за червено, 8-15 за зелено, 0-7 за синьо.
  • Color(int r, int g, int b)- метод, използван за дефиниране на непрозрачен RGB цвят. Стойността на цвета трябва да е между 0 и 255.
  • Color(int r, int g, int b, int a)- създава цвят в схемата RGBA (0-255).
  • Color(int rgba, boolean b)се използва за създаване на sRGB цветове в рамките на дефинирана комбинирана стойност. Диапазонът от стойности обхваща 24-31 за алфа, 16-23 за червено, 8-15 за зелено и 0-7 за синьо.
Освен това, class.awt.color работи с полетата, наследени от Java.awt.Transparency:
  • TRANSLUCENTпредставлява дали цветът съдържа or не алфа стойности и има две стойности - 0 и 1.
  • OPAQUEприсвоява алфа стойност 1 на обекта, гарантирайки му пълна непрозрачност.
  • BITMASKпредставлява стойността на абсолютната непрозрачност or прозрачност и е в диапазона от (0;1), където 0 е пълна прозрачност, а 1 е изключителна непрозрачност.

Топ 15 метода за използване с Java AWT цветови клас

За да манипулират даден цвят, да регулират неговата тъмнина or яркост, Java разработчиците разчитат на различни методи. Има десетки от тях, така че не е нужно да учите всички наизуст. Въпреки това, когато става въпрос за най-широко използваните методи на Java AWT Color, ние стеснихме списъка до петнадесет. Запомнянето им, без да се налага да препращат към documentацията на Java API, би било полезно за разработчиците.

по-тъмен()

Методът се използва за създаване на нов цвят, който е по-тъмна version на цвета, който вече сте дефинирали. Пример :

Color.green.darker()
Ако прилагането darker()веднъж не е достатъчно, за да създадете нюанс, от който се нуждаете, не се колеbyteе да приложите повторно метода толкова пъти, колкото искате, Howто е показано по-долу:

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

по-ярък()

Както подсказва името, Color brighter()се използва за озаряване на нюанса, който вече имате. Подобно на darker(), може да се използва няколко пъти за един цвят. Пример :

Color myColor = Color.RED;          

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

int getAlpha()

Ако искате да върнете алфа компонента на вашия цвят, използвайте този метод. Имайте предвид, че алфа стойностите са в диапазона 0-255. Ето примера за приложението и връщането на метода. Пример :

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

статичен цвят getColor(String nm)

Java разработчиците могат да използват този метод, за да намерят цвят, като използват системните свойства. Има и други методи за справяне с подобни цели:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

деcodeиране на статичен цвят (низ nm)

Този метод се използва за показване на цвят като низ. След като преобразуването приключи, разработчикът ще получи определен непрозрачен цвят. Пример :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

PaintContext createContext(ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform xform, съвети за RenderingHints)

Този метод изглежда сложен, но е по-лесен за манипулиране, отколкото изглежда. Paint Context CreateContext()се използва за дефиниране на повтарящ се плътен цветен модел. Пример :

 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)

Това е метод на Java, който можете да приложите към цвят, за да върнете неговия плаващ масив и алфа компоненти. Методът се прилага към даденост, ColorSpaceдефинирана от cspace. Пример :

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

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

Java разработчиците могат да използват този метод, за да върнат цветовото пространство за избран цвят. Друг начин да получите цветово пространство за даден запис е чрез прилагане на Arrays.to.String. Това е по-сложна стратегия, Howто се вижда в примера по-долу: Примери :

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 разработчиците прилагат този метод за създаване на нов цветен обект въз основа на стойностите на HSB модела. Пример :

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

Този метод на Java връща стойността на зеления компонент за цвета, който сте създали. Всички стойности се вписват в диапазона, който съответства на зеленото в цветовата схема RGB. Пример :

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

getRed()

Подобно на getGreen()връща getRedстойността за червения компонент на даден цвят. Вече видяхте How беше приложен методът в горния пример.

getBlue()

Този метод връща стойността на синьото в диапазона от стойности на RGB цветовата схема. По същия начин, за примера на използване getBlue(), вижте описанието на getGreen().

getAlpha()

Методът getAlpha() се използва в Java, когато разработчикът иска да намери алфа стойността на даден цвят. Подобно на RBG, алфите на всички цветове са в диапазона 0-255. Пример : ето How getAlpha()се използва като част от цикъл.

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

getTransparency()

Този метод връща стойността на прозрачност, която вие or друг разработчик сте посочor за цвета при създаването му. Пример :

public int getTransparency() {

return myColor.getTransparency();

булево равно (Object obj)

Този метод е много полезен, ако сравнявате два цвята един с друг. Той позволява на разработчиците на Java да знаят дали два цветни обекта имат равни стойности. Пример :

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

е равно (Object obj)

Подобно на boolean equals(Object obj), този е сравнителен метод. Използваме го, за да определим дали цветните обекти са равни един на друг. Пример :

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

Ръководство за основните цветове, използвани в Java

След като вече разбирате методите, използвани за манипулиране на цветове в Java, нека да разгледаме типовете полета, с които ще работите. Това са действителните статични цветове, които Java разработчиците могат да дефинират. Можете or да дефинирате цвят, като въведете името му (уверете се, че сте го въвели точно Howто е написано в официалната documentация) or като посочите неговата RGB стойност. Нека да разгледаме палитрата, която разработчиците използват:
Име на полето Описание
статичен черен цвят (ЧЕРЕН) Определя черния цвят
статичен цвят бял (БЯЛ) Определя белия цвят
статичен цвят син (BLUE) Използва се за определяне на синьо
статичен цвят сив (СИВ) Определя сивия цвят
статичен цвят тъмносив (DARK_GRAY) Определя по-тъмен нюанс на сивото
статичен цвят светлосив (LIGHT_GRAY) Определя по-светъл нюанс на сивото
статичен зелен цвят (ЗЕЛЕН) Използва се за определяне на зеления цвят
статичен цвят магента (MAGENTA) Определя магента нюанса
статичен цвят розов (PINK) Дефинира розово в Java
статичен цвят оранжев (ОРАНЖЕВ) Създава оранжевия цвят в Java
статичен цвят жълт (YELLOW) Използва се за дефиниране на жълто
статичен цвят червен (ЧЕРВЕН) Дефинира червения цвят в Java

Практически задачи за използване на AWT.Color в Java

Смятате ли, че имате солидна основа на AWT Color в Java? Нека тестваме тези умения, като решим няколко практически задачи - тук ще трябва да приложите конструктори и общи методи, Howто и други Java инструменти, които не са свързани с цвета. Практически проблем №1 . Създайте персонализиран компонент, който позволява на потребител на програма да променя RGB нивата в цвят (подобно на RGBColorChooser). Уверете се, че сте включor getColor() във вашите компоненти. Направете компонента подклас на панел, а не аплет. Отговор : това е доста сложен проблем - нека го разделим на управляеми стъпки:
  1. Преобразувайте RGBChooserв компонент.
  2. Добавете нова рутина към компонента - getColor().
  3. Добавете setColor(), за да зададете цвета.
Ето примерния code, който трябва да получите в края на деня:

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

Заключение

Поздравления, преминахте през това обширно ръководство за AWT.Color в Java. Сега работата с интерфейсите ще бъде много по-лесна. Не забравяйте да приложите знанията си, като решавате практически задачи и тестове на CodeGym. Практиката прави перфектните, така че дайте най-добрия шанс за примерни задачи!
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION