Czym jest klasa kolorów AWT w Javie?
Głównym celem AWT Color jest umożliwienie programistom tworzenia nowych kolorów za pomocą kodu Java przy użyciu pakietów RGB (czerwony, zielony, niebieski), RGBA (czerwony, zielony, niebieski, alfa) lub HSB (odcień, nasycenie, komponenty BRI). Klasa zawiera dwie wartości — kod odcienia oraz wartość krycia/przezroczystości. Oto jak deklaruje się klasę java.awt.Color:public class Color
extends Object
implements Paint, Serializable
Aby zadeklarować różne typy kolorów za pomocą Class.java.awt.Color, programiści używają konstruktorów — przyjrzymy się im teraz.
Konstruktory AWT.Color w Javie
W zależności od parametru koloru, który chcesz utworzyć, trzeba będzie użyć określonego typu konstruktora koloru. Jest ich kilka — przyjrzyjmy się im po kolei.Color(float r, float g, float b) jest klasą używaną do definiowania koloru w schemacie kolorów RGB, który jest nieprzezroczysty. Zakres kolorów można określić w dowolnym miejscu z przedziału od 0,0 do 0,1.
Color(float r, float b, float g, float a) to klasa, która definiuje kolor RGBA (zakres dostępnych wartości to 0,0 i 0,1).
Color(ColorSpace c, float[], co, float a) definiuje kolor w podanej wcześniej przestrzeni barw ColorSpace. Programista określa zakres składników koloru w tablicy float o zdefiniowanej alfa.
Color(int, rgb) to klasa tworząca kolor RGB (nieprzezroczysty). Należy zwrócić uwagę na wartość składową konstruktora — 16-23 dla koloru czerwonego, 8-15 dla zielonego, 0-7 dla niebieskiego.
Color(int r, int g, int b) — metoda służąca do definiowania nieprzezroczystego koloru RGB. Wartość koloru powinna mieścić się w zakresie od 0 do 255.
Color(int r, int g, int b, int a) — tworzy kolor w schemacie RGBA (0-255).
Color(int rgba, boolean b) służy do tworzenia kolorów sRGB w ramach określonej łącznej wartości. Zakres wartości wynosi 24-31 dla alfy, 16-23 dla czerwieni, 8-15 dla zieleni i 0-7 dla niebieskiego.
TRANSLUCENT określa, czy kolor zawiera wartości alfa i ma dwie wartości — 0 i 1.
OPAQUE przypisuje obiektowi wartość alfa równą 1, gwarantując jego całkowitą nieprzezroczystość.
BITMASK oznacza wartość bezwzględnej nieprzezroczystości lub przezroczystości i mieści się w zakresie (0;1), gdzie 0 oznacza pełną przezroczystość, natomiast 1 — skrajną nieprzezroczystość.
15 najlepszych metod do użycia z klasą Java AWT Color
Aby manipulować kolorem, dostosować jego ciemność lub jasność, programiści Javy używają różnych metod. Jest ich kilkadziesiąt, więc nie trzeba uczyć się ich wszystkich na pamięć. Jednak jeśli chodzi o najczęściej używane metody Java AWT Color, zawęziliśmy listę do piętnastu. Zapamiętanie ich bez konieczności odwoływania się do dokumentacji Java API byłoby pomocne dla programistów.darker()
Metoda ta służy do tworzenia nowego koloru, który jest ciemniejszą wersją koloru już zdefiniowanego. Przykład:Color.green.darker()
Jeśli jednokrotne zastosowanie metody darker() nie wystarczy, aby uzyskać pożądany odcień, możesz powtórzyć tę metodę tyle razy ile chcesz, tak jak pokazano poniżej:
Color.green.darker().darker().darker().darker().darker()
brighter()
Jak sama nazwa wskazuje, Color brighter() służy do rozjaśniania odcieni, które już posiadamy. Podobnie jak w przypadku darker(), można jej użyć wiele razy dla jednego koloru. Przykład:Color myColor = Color.RED;
JLabel label = new JLabel(„Imię”);
label.setForeground(myColor.brighter());
int getAlpha()
Jeśli chcesz zwrócić składową alfa swojego koloru, użyj tej metody. Należy pamiętać, że wartości alfa mieszczą się w zakresie 0-255. Oto przykład zastosowania i zwrotu metody. Przykład:alpha = Color.black.getAlpha();
return new Color(components[0], components[1], components[2], alpha);
static Color getColor(String nm)
Programiści Java mogą użyć tej metody do zlokalizowania koloru za pomocą właściwości systemowych. Istnieją inne metody pozwalające osiągnąć podobne cele:- static Color getColor(String nm, int v)
- static Color getColor(String nm, Color v)
static Color decode (string nm)
Ta metoda służy do wyświetlania koloru jako ciągu. Po zakończeniu konwersji programista otrzyma zdefiniowany kolor nieprzezroczysty. Przykład:public static Color decodeColor(String hexColor) {
return Color.decode(hexColor);
PaintContext createContext(ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform xform, RenderingHints hints)
Ta metoda wygląda na skomplikowaną, lecz jest łatwiejsza do zastosowania, niż się wydaje. Paint Context CreateContext() służy do definiowania powtarzającego się wzoru jednolitego koloru. Przykład: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(„Podczas malowania wystąpił błąd”, e);
return new Color(0, 0, 0, 0).createContext(cm, deviceBounds, userBounds, xform, hints);
}
}
}
float[] getComponents(ColorSpace cspace, float[] compArray)
Jest to metoda Java, którą można zastosować do koloru, aby zwrócić jego tablicę float i składowe alfa. Metoda ma zastosowanie przy danym ColorSpace zdefiniowanym przez cspace. Przykład:public float[] getComponents(ColorSpace cspace, float[] compArray) {
return myColor.getComponents(cspace, compArray);
}
ColorSpace getColorSpace()
Programiści Java mogą użyć tej metody do zwrócenia przestrzeni kolorów dla wybranego koloru. Innym sposobem uzyskania przestrzeni kolorów dla danego wpisu jest zastosowanie Arrays.to.String. Jest to bardziej złożona strategia, jak widać na poniższym przykładzie: Przykład: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)
Programiści Java stosują tę metodę do tworzenia nowego obiektu koloru na podstawie wartości modelu HSB. Przykład:private Color colorAt(int y)
{
return Color.getHSBColor(1 - (float) y / (height - 1), 1, 1);
}
}
getGreen() zwraca składową zieloną w zakresie 0-255 w domyślnej przestrzeni sRGB.
getGreen()
Ta metoda Java zwraca wartość składowej zielonej dla utworzonego koloru. Wszystkie wartości mieszczą się w zakresie odpowiadającym kolorowi zielonemu w schemacie kolorów RGB. Przykład:Color clickBoxColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), 20);
getRed()
Podobnie jak getGreen(), getRed zwraca wartość składowej czerwonej danego koloru. Sposób zastosowania tej metody został już pokazany w powyższym przykładzie.getBlue()
Ta metoda zwraca wartość koloru niebieskiego w zakresie wartości schematu kolorów RGB. Podobnie, przykład użycia getBlue() znajduje się w opisie funkcji getGreen().getAlpha()
Metoda getAlpha() jest używana w Javie, gdy programista chce znaleźć wartość alfa danego koloru. Podobnie jak w przypadku RBG, wartości alfa wszystkich kolorów mieszczą się w zakresie 0-255. Przykład: oto jak użyto getAlpha() jako części pętli.int alpha = color.getAlpha();
if (alpha != 255)
{
setStrokeAlpha(alpha);
strokeAlphaSet = true;
getTransparency()
Ta metoda zwraca wartość przezroczystości określoną przez ciebie lub innego programistę dla danego koloru podczas jego tworzenia. Przykład:public int getTransparency() {
return myColor.getTransparency();
boolean equals(Object obj)
Ta metoda jest bardzo przydatna w przypadku porównywania ze sobą dwóch kolorów. Dzięki niemu programiści Javy wiedzą, czy dwa kolorowe obiekty mają równe wartości. Przykład:import java.awt.Color;
public class Main {
public static void main(String[] a) {
Color myBlack = new Color(0, 0, 0); // Kolor czarny
Color myWhite = new Color(255, 255, 255); // Kolor biały
System.out.println(myBlack.equals(myWhite));
}
}
equals(Object obj)
Podobnie jak boolean equals(Object obj), jest to metoda porównawcza. Używamy jej do określania, czy obiekty kolorowe są sobie równe. Przykład:Object a = new Object(); Object b = new Object(); return(a.equals(b));

Przewodnik po głównych kolorach używanych w Javie
Po zapoznaniu się z metodami manipulowania kolorami w Javie przyjrzyjmy się typom pól, z którymi będziemy pracować. Są to rzeczywiste kolory statyczne, które programiści Javy mogą zdefiniować. Kolor można zdefiniować, wpisując jego nazwę (upewnij się, że wpisujesz ją dokładnie tak, jak jest zapisana w oficjalnej dokumentacji) lub określając jego wartość RGB. Rzućmy okiem na palety używane przez programistów:Nazwa pola | Opis |
static color black (BLACK) | Definiuje kolor czarny |
static color white (WHITE) | Definiuje kolor biały |
static color blue (BLUE) | Służy do definiowania koloru niebieskiego |
static color gray (GRAY) | Definiuje kolor szary |
static color darkgray (DARK_GRAY) | Definiuje ciemniejszy odcień szarości |
static color lightGray (LIGHT_GRAY) | Definiuje jaśniejszy odcień szarości |
static color green (GREEN) | Służy do definiowania koloru zielonego |
static Color magenta (MAGENTA) | Definiuje odcień magenta |
static Color pink (PINK) | Definiuje różowy w Javie |
static Color orange (ORANGE) | Tworzy kolor pomarańczowy w Javie |
static Color yellow (YELLOW) | Służy do definiowania koloru żółtego |
static Color red (RED) | Definiuje kolor czerwony w Javie |
Problemy praktyczne z wykorzystaniem AWT.Color w Javie
Czy czujesz, że masz solidne podstawy AWT Color w Javie? Sprawdźmy te umiejętności, rozwiązując kilka praktycznych problemów — tutaj trzeba będzie zastosować konstruktory i zwykłe metody, a także inne narzędzia Javy niezwiązane z kolorami. Problem praktyczny #1. Utwórz niestandardowy komponent umożliwiający użytkownikowi programu zmianę poziomów RGB w kolorze (podobny do RGBColorChooser). Upewnij się, że włączono getColor() do swoich komponentów. Ustaw komponent jako podklasę Panel, a nie aplet. Odpowiedź: jest to dość złożony problem – podzielmy go na wykonalne kroki:- Przekształć RGBChooser w komponent.
- Dodaj nową procedurę do komponentu — getColor().
- Dodaj setColor(), aby ustawić kolor.
import java.awt.*;
import java.awt.event.*;
public class RGBChooserComponent extends Panel implements AdjustmentListener {
private Scrollbar redScroll, greenScroll, blueScroll; // Paski przewijania.
private Label redLabel, greenLabel, blueLabel; // Do wyświetlania wartości RGB.
private Canvas colorCanvas; // Łatka Color do wyświetlania koloru.
public RGBChooserComponent() { // Konstruktor.
/*Dodajmy teraz paski przewijania z wartościami od 0 do 255. */
redScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
greenScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0,