Jeśli opanujesz Java Abstract Toolkit, konieczne będzie poznanie zastosowań klasy Java AWT Color. Ponieważ zaangażowanych jest wiele konstruktorów i metod, na początku może to wydawać się trudne do opanowania.
Ale nie martw się, mamy wszystko pod kontrolą:) Dzięki temu pełnemu opisowi Java AWT Color dowiesz się, jak szybko utworzyć nowy typ koloru i nim zarządzać. Zaoferujemy również kilka testów praktycznych, które pomogą ci doskonalić swoje umiejętności.
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:
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.
Poza tym class.awt.color operuje na polach odziedziczonych po Java.awt.Transparency:
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:
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 =newJLabel("First Name");
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:
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:
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:
publicPaintContextcreateContext(ColorModel cm,Rectangle deviceBounds,Rectangle2D userBounds,AffineTransform xform,RenderingHints hints){try{returnnewAxialShadingContext(shading, cm, xform, matrix, deviceBounds);}catch(IOException e){LOG.error("An error occurred while painting", e);returnnewColor(0,0,0,0).createContext(cm, deviceBounds, userBounds, xform, hints);}}}
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:
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:
Programiści Java stosują tę metodę do tworzenia nowego obiektu koloru na podstawie wartości modelu HSB.
Przykład:
privateColorcolorAt(int y){returnColor.getHSBColor(1-(float) y /(height -1),1,1);}}getGreen() returns the green component in the range 0-255 in the default sRGB space.
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 =newColor(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:
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:
importjava.awt.Color;publicclassMain{publicstaticvoidmain(String[] a){Color myBlack =newColor(0,0,0);// Color blackColor myWhite =newColor(255,255,255);// Color whiteSystem.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 =newObject();Object b =newObject();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.
Poniżej znajduje się przykładowy kod, który dzięki temu otrzymujemy:
importjava.awt.*;importjava.awt.event.*;publicclassRGBChooserComponentextendsPanelimplementsAdjustmentListener{privateScrollbar redScroll, greenScroll, blueScroll;// Scroll bars.privateLabel redLabel, greenLabel, blueLabel;// For displaying RGB values.privateCanvas colorCanvas;// Color patch for displaying the color.publicRGBChooserComponent(){// Constructor./*Now let’s add scrollbars with values from 0 to 255. */
redScroll =newScrollbar(Scrollbar.HORIZONTAL,0,10,0,265);
greenScroll =newScrollbar(Scrollbar.HORIZONTAL,0,10,0,265);
blueScroll =newScrollbar(Scrollbar.HORIZONTAL,0,10,0,265);/* Create Labels showing current RGB and HSB values. */
redLabel =newLabel(" R = 0");
greenLabel =newLabel(" G = 0");
blueLabel =newLabel(" 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 =newCanvas();
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(newGridLayout(1,3,3,3));setBackground(Color.gray);Panel scrolls =newPanel();Panel labels =newPanel();add(scrolls);add(labels);add(colorCanvas);/* Add the Scrollbars and the Labels to their respective panels. */
scrolls.setLayout(newGridLayout(3,1,2,2));
scrolls.add(redScroll);
scrolls.add(greenScroll);
scrolls.add(blueScroll);
labels.setLayout(newGridLayout(3,1,2,2));
labels.add(redLabel);
labels.add(greenLabel);
labels.add(blueLabel);}// end init();publicColorgetColor(){// Get the color currently displayed by the component.int r = redScroll.getValue();int g = greenScroll.getValue();int b = blueScroll.getValue();returnnewColor(r, g, b);}publicvoidsetColor(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(newColor(r,g,b));// Set the canvas.
colorCanvas.repaint();}}publicDimensiongetMinimumSize(){// Specify the minimum reasonable size of this component.returnnewDimension(150,40);}publicDimensiongetPreferredSize(){// Specify the preferred size of this component.returnnewDimension(280,80);}publicvoidadjustmentValueChanged(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(newColor(r,g,b));
colorCanvas.repaint();// Redraw the canvas in its new color.}// end adjustmentValueChangedpublicInsetsgetInsets(){// 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.returnnewInsets(2,2,2,2);}}// end class RGBColorChooser
Before becoming a developer, Pavlo devoted 15 years to system administration, but he understood that he did not want to do this fo ... [Przeczytaj pełną biografię]