Ha elsajátítja a Java Abstract Toolkit, akkor meg kell tanulnia a Java AWT Color Class alkalmazásait. Mivel nagyon sok konstruktor és módszerről van szó, elsőre félelmetesnek tűnhet. De ne aggódj, mi mindent megtalálsz:) A Java AWT Color teljes leírásával megtanulhatja, hogyan hozhat létre új színtípust, és hogyan kezelheti azt pillanatok alatt. Néhány gyakorló tesztet is kínálunk, amelyek segítenek fejleszteni tudását.
Mi az AWT Color Class a Java-ban?
Az AWT Color elsődleges célja, hogy a fejlesztők új színeket hozzanak létre Java kód segítségével RGB (piros, zöld, kék), RGBA (piros, zöld, kék, alfa) vagy HSB (színárnyalat, telítettség, BRI komponensek) csomagokkal. Az osztály két értéket tartalmaz - az árnyék kódját és az átlátszatlanság/átlátszóság értékét. Így deklarálhatja a java.awt.Color osztályt:public class Color
extends Object
implements Paint, Serializable
A különböző színtípusok Class.java.awt.Color használatával deklarálásához a fejlesztők konstruktorokat használnak – most ezeket nézzük meg.
AWT.Color konstruktorok Java nyelven
A létrehozni kívánt szín paraméterétől függően egy adott típusú színkonstruktort kell használnia. Ezekből van egy maroknyi – vizsgáljuk meg őket egyenként.Color(float r, float g, float b)
az az osztály, amelyet az RGB színséma átlátszatlan színének meghatározására használ. A színtartományt 0,0 és 0,1 között bárhol megadhatja.Color(float r, float b, float g, float a)
az az osztály, amely meghatároz egy RGBA színt (az elérhető értékek tartománya 0,0 és 0,1).Color(ColorSpace c, float[], co, float a)
meghatároz egy színt az előzetesen megadott ColorSpace-ben. A fejlesztő határozza meg a színösszetevők tartományát egy meghatározott alfa float tömbjében.Color(int, rgb)
egy RGB színt (átlátszatlan) létrehozó osztály. Ügyeljen a konstruktor komponens értékére - 16-23 a piros, 8-15 a zöld, 0-7 a kék.Color(int r, int g, int b)
- átlátszatlan RGB szín meghatározására használt módszer. A szín értékének 0 és 255 között kell lennie.Color(int r, int g, int b, int a)
- színt hoz létre az RGBA sémában (0-255).Color(int rgba, boolean b)
sRGB színek létrehozására szolgál egy meghatározott kombinált értéken belül. Az értékek tartománya 24-31 az alfa, 16-23 a piros, 8-15 a zöld és 0-7 a kék.
Java.awt.Transparency
:
TRANSLUCENT
azt jelzi, hogy a szín tartalmaz-e alfa értékeket, és két értéke van - 0 és 1.OPAQUE
az 1-es alfa-értéket rendeli az objektumhoz, garantálva annak teljes átlátszatlanságát.BITMASK
az abszolút átlátszatlanságot vagy átlátszóságot jelöli, és a (0;1) tartományba esik, ahol a 0 a teljes átlátszóságot, az 1 pedig a szélsőséges átlátszatlanságot jelenti.
A 15 legjobb módszer a Java AWT színosztályhoz
A színek manipulálásához, sötétségének vagy fényerejének beállításához a Java fejlesztők különböző módszerekre támaszkodnak. Több tucat ilyen van, így nem kell mindegyiket fejből megtanulni. Ha azonban a legszélesebb körben használt Java AWT Color metódusokról van szó, a listát tizenötre szűkítettük. A fejlesztők számára hasznos lenne, ha megjegyezné ezeket a Java API dokumentációra való hivatkozás nélkül.sötétebb ()
Ez a módszer egy új szín létrehozására szolgál, amely a már meghatározott szín sötétebb változata. Példa :Color.green.darker()
Ha darker()
az egyszeri felhordás nem elég a kívánt árnyalat létrehozásához, bátran alkalmazza újra a módszert, ahányszor csak akarja, az alábbiak szerint:
Color.green.darker().darker().darker().darker().darker()
fényesebb ()
Ahogy a neve is sugallja,Color brighter()
a már meglévő árnyalat élénkítésére szolgál. Hasonlóan a -hoz darker()
, többször is használható színenként. Példa :
Color myColor = Color.RED;
JLabel label = new JLabel("First Name");
label.setForeground(myColor.brighter());
int getAlpha()
Ha vissza szeretné adni a szín alfa-komponensét, használja ezt a módszert. Ne feledje, hogy az alfa értékek a 0-255 tartományban vannak. Íme a példa a metódus alkalmazására és visszatérésére. Példa :alpha = Color.black.getAlpha();
return new Color(components[0], components[1], components[2], alpha);
statikus szín getColor (karakterlánc nm)
A Java fejlesztők ezt a módszert használhatják a színek rendszertulajdonságok segítségével történő megkeresésére. Vannak más módszerek is a hasonló célok kezelésére:static Color getColor(String nm, int v)
static Color getColor(String nm, Color v)
statikus színdekódolás (karakterlánc nm)
Ezt a módszert használják egy szín megjelenítésére karakterláncként. Az átalakítás befejezése után a fejlesztő meghatározott átlátszatlan színt kap. Példa :public static Color decodeColor(String hexColor) {
return Color.decode(hexColor);
PaintContext createContext (ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform xform, RenderingHints tippek)
Ez a módszer bonyolultnak tűnik, de könnyebben manipulálható, mint amilyennek látszik.Paint Context CreateContext()
ismétlődő egyszínű minta meghatározására szolgál. Példa :
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)
Ez egy Java-módszer, amelyet egy színre alkalmazhat, hogy visszaadja a float tömböt és az alfa-komponenseket. A metódus a cspace által meghatározott adottra vonatkozikColorSpace
. Példa :
public float[] getComponents(ColorSpace cspace, float[] compArray) {
return myColor.getComponents(cspace, compArray);
}
ColorSpace getColorSpace()
A Java fejlesztők ezzel a módszerrel visszaadhatják a színteret egy kiválasztott színhez. Egy másik módja annak, hogy színteret kapjunk egy adott bejegyzéshez, az Arrays.to.String alkalmazása. Ez egy összetettebb stratégia, amint az az alábbi példában látható: Példák :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)));
getHSBCColor(float h, float s, float b)
A Java fejlesztők ezzel a módszerrel új színobjektumot hoznak létre a HSB modell értékei alapján. Példa :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.
get Green()
Ez a Java metódus a zöld összetevő értékét adja vissza a létrehozott színhez. Az összes érték belefér az RGB színséma zöldjének megfelelő tartományba. Példa :Color clickBoxColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), 20);
getRed()
Hasonlóan a -hozgetGreen()
, getRed
egy adott szín vörös összetevőjének értékét adja vissza. A fenti példában már láthatta, hogyan alkalmazták a módszert.
getBlue()
Ez a módszer a kék értékét adja vissza az RGB színséma értéktartományán belül. Hasonlóképpen, a használat példájátgetBlue()
lásd a leírásában getGreen()
.
getAlpha()
A getAlpha() metódust Java-ban használják, amikor a fejlesztő meg akarja találni egy adott szín alfa értékét. Az RBG-hez hasonlóan az összes szín alfája a 0-255 tartományban van. Példa : a következőképpengetAlpha()
használták a ciklus részeként.
int alpha = color.getAlpha();
if (alpha != 255)
{
setStrokeAlpha(alpha);
strokeAlphaSet = true;
getTransparency()
Ez a módszer azt az átlátszósági értéket adja vissza, amelyet Ön vagy egy másik fejlesztő adott meg a színhez annak létrehozásakor. Példa :public int getTransparency() {
return myColor.getTransparency();
logikai egyenlő (Object Obj)
Ez a módszer nagyon hasznos, ha két színt hasonlít össze egymással. Lehetővé teszi a Java fejlesztők számára, hogy tudják, hogy két színes objektum azonos értékű-e. Példa :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));
}
}
egyenlő (objektum objektum)
A -hoz hasonlóanboolean equals(Object obj)
ez is egy összehasonlító módszer. Használjuk annak meghatározására, hogy a színes objektumok egyenlőek-e egymással. Példa :
Object a = new Object(); Object b = new Object(); return(a.equals(b));
Útmutató a Java-ban használt fő színekhez
Most, hogy megértette a Java színek manipulálására használt módszereket, vessünk egy pillantást a mezőtípusokra, amelyekkel dolgozni fog. Ezek azok a tényleges statikus színek, amelyeket a Java fejlesztők meghatározhatnak. Meghatározhat egy színt a nevének megadásával (győződjön meg róla, hogy pontosan úgy adja meg, ahogy a hivatalos dokumentációban van), vagy megadhatja az RGB értékét. Vessünk egy pillantást a palettafejlesztők által használt palettafejlesztőkre:Mező neve | Leírás |
statikus szín fekete (FEKETE) | Meghatározza a fekete színt |
statikus fehér szín (FEHÉR) | Meghatározza a fehér színt |
statikus kék szín (KÉK) | A kék meghatározására szolgál |
statikus szín szürke (GREY) | Meghatározza a szürke színt |
statikus szín sötétszürke (DARK_GRAY) | A szürke sötétebb árnyalatát határozza meg |
statikus szín világosszürke (LIGHT_GRAY) | A szürke világosabb árnyalatát határozza meg |
statikus zöld szín (GREEN) | A zöld szín meghatározására szolgál |
statikus szín bíbor (MAGENTA) | Meghatározza a bíbor árnyalatot |
statikus Szín rózsaszín (PINK) | A rózsaszínt határozza meg a Java nyelven |
statikus szín narancssárga (ORANGE) | Létrehozza a narancssárga színt a Java nyelven |
statikus Szín sárga (SÁRGA) | A sárga meghatározására szolgál |
statikus szín piros (PIROS) | A vörös színt határozza meg a Java nyelven |
Gyakorlati problémák az AWT.Color használatához Java nyelven
Úgy érzi, szilárd alapja van az AWT Color Java nyelven? Teszteljük ezeket a készségeket néhány gyakorlati probléma megoldásával – itt konstruktorokat és gyakori módszereket, valamint egyéb, nem színhez kapcsolódó Java-eszközöket kell alkalmaznia. 1. gyakorlati probléma . Hozzon létre egy egyéni összetevőt, amely lehetővé teszi a program felhasználója számára az RGB-szintek beállítását egy színben (hasonlóan a -hozRGBColorChooser
). Ügyeljen arra, hogy a getColor() függvényt tartalmazza az összetevők között. Legyen az összetevő Panel alosztály, ne kisalkalmazás. Válasz : ez egy meglehetősen összetett probléma – bontsuk le kezelhető lépésekre:
- Konvertálja
RGBChooser
a komponenst. - Új rutin hozzáadása a - komponenshez
getColor()
. - Hozzáadás
setColor()
a szín beállításához.
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