diff --git a/src/java.desktop/share/classes/java/awt/Color.java b/src/java.desktop/share/classes/java/awt/Color.java
index 923afb91866..e129cbae23a 100644
--- a/src/java.desktop/share/classes/java/awt/Color.java
+++ b/src/java.desktop/share/classes/java/awt/Color.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -334,7 +334,7 @@ public class Color implements Paint, java.io.Serializable {
* The actual color used in rendering depends
* on finding the best match given the color space
* available for a given output device.
- * Alpha is defaulted to 255.
+ * Alpha defaults to 255.
*
* @throws IllegalArgumentException if {@code r}, {@code g}
* or {@code b} are outside of the range
@@ -378,12 +378,15 @@ public class Color implements Paint, java.io.Serializable {
}
/**
- * Creates an opaque sRGB color with the specified combined RGB value
- * consisting of the red component in bits 16-23, the green component
- * in bits 8-15, and the blue component in bits 0-7. The actual color
- * used in rendering depends on finding the best match given the
- * color space available for a particular output device. Alpha is
- * defaulted to 255.
+ * Creates an opaque sRGB color with the specified RGB value consisting of
+ *
+ * - the red component in bits 16-23,
+ *
- the green component in bits 8-15, and
+ *
- the blue component in bits 0-7.
+ *
+ * The actual color used in rendering depends on finding the best match
+ * given the color space available for a particular output device. Alpha
+ * defaults to 255.
*
* @param rgb the combined RGB components
* @see java.awt.image.ColorModel#getRGBdefault
@@ -397,14 +400,17 @@ public class Color implements Paint, java.io.Serializable {
}
/**
- * Creates an sRGB color with the specified combined RGBA value consisting
- * of the alpha component in bits 24-31, the red component in bits 16-23,
- * the green component in bits 8-15, and the blue component in bits 0-7.
- * If the {@code hasalpha} argument is {@code false}, alpha
- * is defaulted to 255.
+ * Creates an sRGB color with the specified ARGB value consisting of
+ *
+ * - the alpha component in bits 24-31,
+ *
- the red component in bits 16-23,
+ *
- the green component in bits 8-15, and
+ *
- the blue component in bits 0-7.
+ *
+ * If the {@code hasAlpha} argument is {@code false}, alpha defaults to 255.
*
- * @param rgba the combined RGBA components
- * @param hasalpha {@code true} if the alpha bits are valid;
+ * @param argb the combined ARGB components
+ * @param hasAlpha {@code true} if the alpha bits are valid;
* {@code false} otherwise
* @see java.awt.image.ColorModel#getRGBdefault
* @see #getRed
@@ -413,17 +419,17 @@ public class Color implements Paint, java.io.Serializable {
* @see #getAlpha
* @see #getRGB
*/
- public Color(int rgba, boolean hasalpha) {
- if (hasalpha) {
- value = rgba;
+ public Color(int argb, boolean hasAlpha) {
+ if (hasAlpha) {
+ value = argb;
} else {
- value = 0xff000000 | rgba;
+ value = 0xff000000 | argb;
}
}
/**
* Creates an opaque sRGB color with the specified red, green, and blue
- * values in the range (0.0 - 1.0). Alpha is defaulted to 1.0. The
+ * values in the range (0.0 - 1.0). Alpha defaults to 1.0. The
* actual color used in rendering depends on finding the best
* match given the color space available for a particular output
* device.
@@ -570,9 +576,14 @@ public class Color implements Paint, java.io.Serializable {
/**
* Returns the RGB value representing the color in the default sRGB
- * {@link ColorModel}.
- * (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are
- * blue).
+ * {@link ColorModel}, consisting of
+ *
+ * - the alpha component in bits 24-31,
+ *
- the red component in bits 16-23,
+ *
- the green component in bits 8-15, and
+ *
- the blue component in bits 0-7.
+ *
+ *
* @return the RGB value of the color in the default sRGB
* {@code ColorModel}.
* @see java.awt.image.ColorModel#getRGBdefault
diff --git a/test/jdk/java/awt/ColorClass/ColorARGBConstructorTest.java b/test/jdk/java/awt/ColorClass/ColorARGBConstructorTest.java
new file mode 100644
index 00000000000..3464e2057b9
--- /dev/null
+++ b/test/jdk/java/awt/ColorClass/ColorARGBConstructorTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Color;
+
+/**
+ * @test
+ * @bug 6434110
+ * @summary Verify Color(int, boolean) constructor uses ARGB bit layout
+ */
+public final class ColorARGBConstructorTest {
+
+ public static void main(String[] args) {
+ for (int argb : new int[]{0x00000000, 0x01020304, 0xC0903020,
+ 0x40302010, 0xD08040C0, 0x80000000,
+ 0x7FFFFFFF, 0xFFFFFFFF, 0xFF000000,
+ 0x00FF0000, 0x0000FF00, 0x000000FF})
+ {
+ verify(argb, true);
+ verify(argb, false);
+ }
+ }
+
+ private static void verify(int argb, boolean hasAlpha) {
+ var c = new Color(argb, hasAlpha);
+ int expRGB = hasAlpha ? argb : (0xFF000000 | argb);
+ int expA = hasAlpha ? (argb >>> 24) : 0xFF;
+ int expR = (argb >> 16) & 0xFF;
+ int expG = (argb >> 8) & 0xFF;
+ int expB = argb & 0xFF;
+ check("RGB", expRGB, c.getRGB(), argb, hasAlpha);
+ check("Alpha", expA, c.getAlpha(), argb, hasAlpha);
+ check("Red", expR, c.getRed(), argb, hasAlpha);
+ check("Green", expG, c.getGreen(), argb, hasAlpha);
+ check("Blue", expB, c.getBlue(), argb, hasAlpha);
+ }
+
+ private static void check(String comp, int exp, int got, int argb,
+ boolean hasAlpha)
+ {
+ if (exp != got) {
+ throw new RuntimeException("0x%08X(%b) %s: 0x%08X != 0x%08X"
+ .formatted(argb, hasAlpha, comp, exp, got));
+ }
+ }
+}