如果你正在掌握 Java Abstract Toolkit,你将不得不学习 Java AWT Color Class 的应用。由于涉及到很多构造函数和方法,因此一开始可能会让人感到害怕。但不用担心,我们已经为您准备好了:) 通过这个关于 Java AWT Color 的完整概述,您将学习如何创建新的颜色类型并立即对其进行管理。我们还将提供一些练习测试,帮助您磨练技能。
以下是声明类 java.awt.Color 的方式:
什么是 Java 中的 AWT 颜色类?
AWT Color 的主要目的是允许开发人员使用 RGB(红、绿、蓝)、RGBA(红、绿、蓝、alpha)或 HSB(色调、饱和度、BRI 组件)包使用 Java 代码创建新颜色。该类包含两个值 - 阴影代码和不透明度/透明度值。
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。
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 子类,而不是小程序。 回答:这是一个相当复杂的问题 - 让我们将其分解为可管理的步骤:
- 将 an 转换
RGBChooser
为组件。 - 向组件添加新例程 -
getColor()
。 - 添加
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

GO TO FULL VERSION