CodeGym /Java 博客 /随机的 /Java.Awt.Color 类
John Squirrels
第 41 级
San Francisco

Java.Awt.Color 类

已在 随机的 群组中发布
如果你正在掌握 Java Abstract Toolkit,你将不得不学习 Java AWT Color Class 的应用。由于涉及到很多构造函数和方法,因此一开始可能会让人感到害怕。但不用担心,我们已经为您准备好了:) 通过这个关于 Java AWT Color 的完整概述,您将学习如何创建新的颜色类型并立即对其进行管理。我们还将提供一些练习测试,帮助您磨练技能。

什么是 Java 中的 AWT 颜色类?

AWT Color 的主要目的是允许开发人员使用 RGB(红、绿、蓝)、RGBA(红、绿、蓝、alpha)或 HSB(色调、饱和度、BRI 组件)包使用 Java 代码创建新颜色。该类包含两个值 - 阴影代码和不透明度/透明度值。Java.Awt.Color 类 - 1以下是声明类 java.awt.Color 的方式:

public class Color
   extends Object
      implements Paint, Serializable
要使用 Class.java.awt.Color 声明不同类型的颜色,开发人员使用构造函数 - 我们现在将了解它们。

Java 中的 AWT.Color 构造函数

根据您要创建的颜色参数,您需要使用特定类型的颜色构造函数。其中有一些 - 让我们一一检查。
  • 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 中定义颜色。开发人员在定义的 alpha 的浮点数组中指定颜色分量的范围。
  • 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 颜色。alpha 的值范围为 24-31,红色为 16-23,绿色为 8-15,蓝色为 0-7。
除此之外,class.awt.color 对继承自的字段进行操作Java.awt.Transparency
  • TRANSLUCENT表示颜色是否包含 alpha 值并具有两个值 - 0 和 1。
  • OPAQUE将 alpha 值 1 分配给保证其完全不透明的对象。
  • BITMASK表示绝对不透明度或透明度值,位于 (0;1) 范围内,其中 0 是完全透明,1 是极度不透明。

使用 Java AWT 颜色类的前 15 种方法

要操纵颜色、调整其暗度或亮度,Java 开发人员依赖不同的方法。有几十个这样的,所以你不必记住所有的人。但是,当谈到使用最广泛的 Java AWT Color 方法时,我们将列表缩小到十五个。记住这些而不必参考 Java API 文档将对开发人员有所帮助。

较暗()

该方法用于创建一种新颜色,该颜色是您已经定义的颜色的深色版本。 示例

Color.green.darker()
如果应用darker()一次不足以创建所需的阴影,请随意多次重新应用该方法,如下所示:

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

如果要返回颜色的 alpha 分量,请使用此方法。请记住,alpha 值位于 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)

静态颜色解码(字符串 nm)

此方法用于将颜色显示为字符串。转换完成后,开发人员将获得定义的不透明颜色。 示例

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

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

这种方法看起来很复杂,但它比看起来更容易操作。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 方法,您可以将其应用于颜色以返回其浮点数组和 alpha 组件。该方法适用于ColorSpace由 cspace 定义的给定。 示例

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

return myColor.getComponents(cspace, compArray);

}

色彩空间 getColorSpace()

Java 开发人员可以使用此方法返回所选颜色的颜色空间。为给定条目获取颜色空间的另一种方法是应用 Arrays.to.String。这是一个更复杂的策略,如下例所示: 示例

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(浮动 h,浮动 s,浮动 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.

得到绿色()

此 Java 方法返回您创建的颜色的绿色分量的值。所有值都在 RGB 配色方案中对应于绿色的范围内。 示例

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

获取红色()

与 类似getGreen()getRed返回给定颜色的红色分量的值。您已经在上面的示例中看到了如何应用该方法。

getBlue()

此方法返回 RGB 配色方案值范围内的蓝色值。同样,使用 的例子getBlue(),参见 的描述getGreen()

获取阿尔法()

当开发人员想要找到给定颜色的 alpha 值时,在 Java 中使用 getAlpha() 方法。与 RBG 类似,所有颜色的 alpha 都在 0-255 范围内。 示例:这里是如何getAlpha()用作循环的一部分。

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

获取透明度()

此方法返回您或其他开发人员在创建颜色时为颜色指定的透明度值。 示例

public int getTransparency() {

return myColor.getTransparency();

布尔等于(对象对象)

如果您将两种颜色相互比较,此方法非常有用。它让 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));
  }
}

等于(对象对象)

与 类似boolean equals(Object obj),这是一种比较方法。我们用它来确定颜色对象是否彼此相等。 示例

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

Java 中使用的主要颜色指南

现在您已经了解了在 Java 中用于操作颜色的方法,让我们来看看您将使用的字段类型。这些是 Java 开发人员可以定义的实际静态颜色。您可以通过输入名称来定义颜色(确保您输入的名称与官方文档中所写的完全一致)或指定其 RGB 值。让我们来看看开发人员使用的调色板:
字段名称 描述
静态颜色黑色(BLACK) 定义黑色
静态颜色白色(WHITE) 定义白色
静态颜色蓝色(BLUE) 用于定义蓝色
静态颜色灰色(GREY) 定义灰色
静态颜色深灰色 (DARK_GRAY) 定义较深的灰色阴影
静态颜色浅灰色 (LIGHT_GRAY) 定义较浅的灰色阴影
静态颜色绿色(GREEN) 用于定义绿色
静态颜色洋红色 (MAGENTA) 定义洋红色阴影
静态颜色粉红色(PINK) 在 Java 中定义粉色
静态颜色橙色 (ORANGE) 在 Java 中创建橙色
静态颜色黄色 (YELLOW) 用于定义黄色
静态颜色红色 (RED) 在 Java 中定义红色

在 Java 中使用 AWT.Color 的练习题

您觉得您在 Java 中的 AWT Color 基础扎实吗?让我们通过解决一些实际问题来测试这些技能——在这里,您必须应用构造函数和常用方法,以及其他与颜色无关的 Java 工具。 练习问题#1。创建一个自定义组件,让程序用户可以调整颜色的 RGB 级别(类似于RGBColorChooser)。确保将 getColor() 包含到您的组件中。使组件成为 Panel 子类,而不是小程序。 回答:这是一个相当复杂的问题 - 让我们将其分解为可管理的步骤:
  1. 将 an 转换RGBChooser为组件。
  2. 向组件添加新例程 - getColor()
  3. 添加setColor()以设置颜色。
这是您在一天结束时应该获得的示例代码:

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

结论

恭喜,您已经阅读了这份关于 Java 中的 AWT.Color 的详尽指南。现在,处理接口会容易得多。不要忘记通过解决练习题和 CodeGym 测验来应用您的知识。熟能生巧,所以请尽量尝试示例问题!
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION