Kung pinagkadalubhasaan mo ang Java Abstract Toolkit, kakailanganin mong matutunan ang mga aplikasyon ng Java AWT Color Class. Dahil maraming mga konstruktor at pamamaraan na kasangkot, maaari itong makaramdam ng pananakot sa simula. Ngunit huwag mag-alala, sinaklaw ka namin:) Sa buong rundown na ito sa Java AWT Color, matututunan mo kung paano lumikha ng bagong uri ng kulay at pamahalaan ito sa lalong madaling panahon. Mag-aalok din kami ng ilang mga pagsusulit sa pagsasanay na makakatulong sa iyo na mahasa ang iyong kakayahan.
Ano ang AWT Color Class sa Java?
Ang pangunahing layunin ng AWT Color ay payagan ang mga developer na lumikha ng mga bagong kulay gamit ang Java code gamit ang RGB (pula, berde, asul), RGBA (pula, berde, asul, alpha), o HSB (kulay, saturation, mga bahagi ng BRI) na mga pakete. Ang klase ay naglalaman ng dalawang value - ang code ng shade at ang value ng opacity/transparency. Narito kung paano mo idedeklara ang Class java.awt.Color:
Upang magdeklara ng iba't ibang uri ng mga kulay gamit ang Class.java.awt.Color, gumagamit ang mga developer ng mga constructor - titingnan natin ang mga ito ngayon.
AWT.Color Constructors sa Java
Depende sa parameter ng kulay na gusto mong gawin, kakailanganin mong gumamit ng partikular na uri ng color constructor. Mayroong isang dakot ng mga ito - suriin natin ang mga ito nang paisa-isa.
Color(float r, float g, float b)ay ang klase na iyong ginagamit upang tukuyin ang isang kulay sa RGB color scheme na opaque. Maaari mong tukuyin ang hanay ng kulay kahit saan sa pagitan ng 0.0 at 0.1.
Color(float r, float b, float g, float a)ay ang klase na tumutukoy sa isang kulay ng RGBA (ang hanay ng mga magagamit na halaga ay 0.0 at 0.1).
Color(ColorSpace c, float[], co, float a)ay tumutukoy sa isang kulay sa ColorSpace na iyong tinukoy muna. Tinutukoy ng isang developer ang hanay ng mga bahagi ng kulay sa float array ng isang tinukoy na alpha.
Color(int, rgb)ay isang klase na lumilikha ng isang RGB na kulay (opaque). Siguraduhing bigyang-pansin ang component value ng constructor - 16-23 para sa pula, 8-15 para sa berde, 0-7 para sa asul.
Color(int r, int g, int b)- isang paraan na ginamit upang tukuyin ang isang opaque na kulay ng RGB. Ang halaga ng kulay ay dapat nasa pagitan ng 0 at 255.
Color(int r, int g, int b, int a)- lumilikha ng isang kulay sa RGBA scheme (0-255).
Color(int rgba, boolean b)ay ginagamit upang lumikha ng mga kulay ng sRGB sa loob ng tinukoy na pinagsamang halaga. Ang hanay ng mga halaga ay sumasaklaw sa 24-31 para sa alpha, 16-23 para sa pula, 8-15 para sa berde, at 0-7 para sa asul.
Maliban doon, gumagana ang class.awt.color kasama ang mga field, na minana mula sa Java.awt.Transparency:
TRANSLUCENTkumakatawan sa kung ang kulay ay naglalaman ng mga alpha value at may dalawang value - 0 at 1.
OPAQUEnagtatalaga ng alpha value na 1 sa object na ginagarantiyahan itong kumpletong opaqueness.
BITMASKkumakatawan sa ganap na opaqueness o transparency na halaga at nasa loob ng hanay ng (0;1) kung saan ang 0 ay ganap na transparency at ang 1 ay matinding opaqueness.
Nangungunang 15 Paraan na Gagamitin Sa Java AWT Color Class
Upang manipulahin ang isang kulay, ayusin ang kadiliman o liwanag nito, umaasa ang mga developer ng Java sa iba't ibang pamamaraan. Mayroong dose-dosenang mga iyon kaya hindi mo na kailangang matutunan ang lahat ng ito sa pamamagitan ng puso. Gayunpaman, pagdating sa pinakamalawak na ginagamit na mga pamamaraan ng Kulay ng Java AWT, pinaliit namin ang listahan hanggang labinlimang. Ang pag-alala sa mga ito nang hindi kinakailangang sumangguni sa dokumentasyon ng Java API ay makakatulong sa mga developer.
darker()
Ginagamit ang paraan upang lumikha ng bagong kulay na mas madilim na bersyon ng kulay na natukoy mo na. Halimbawa :
Color.green.darker()
Kung ang pag-apply darker()nang isang beses ay hindi sapat upang lumikha ng isang shade na kailangan mo, huwag mag-atubiling ilapat muli ang pamamaraan nang maraming beses hangga't gusto mo, tulad ng ipinapakita sa ibaba:
Gaya ng ipinahihiwatig ng pangalan, Color brighter()ay ginagamit upang pasayahin ang lilim na mayroon ka na. Katulad ng darker(), maaari itong magamit nang maraming beses bawat solong kulay. Halimbawa :
Color myColor =Color.RED;JLabel label =newJLabel("First Name");
label.setForeground(myColor.brighter());
int getAlpha()
Kung gusto mong ibalik ang alpha component ng iyong kulay, gamitin ang paraang ito. Tandaan na ang mga alpha value ay nasa loob ng 0-255 range. Narito ang halimbawa ng aplikasyon at pagbabalik ng pamamaraan. Halimbawa :
Maaaring gamitin ng mga developer ng Java ang paraang ito upang mahanap ang isang kulay gamit ang mga katangian ng system. Mayroong iba pang mga pamamaraan sa paghawak ng mga katulad na layunin:
static Color getColor(String nm, int v)
static Color getColor(String nm, Color v)
static na Color decode (string nm)
Ang pamamaraang ito ay ginagamit ipakita ang isang kulay bilang isang string. Pagkatapos makumpleto ang conversion, ang isang developer ay makakakuha ng tinukoy na opaque na kulay. Halimbawa :
Mukhang kumplikado ang pamamaraang ito ngunit mas madaling manipulahin kaysa sa tila. Paint Context CreateContext()ay ginagamit upang tukuyin ang isang paulit-ulit na solidong pattern ng kulay. Halimbawa :
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);}}}
Ito ay isang Java method na maaari mong ilapat sa isang kulay upang ibalik ang float array at alpha na mga bahagi nito. Nalalapat ang pamamaraan sa isang ibinigay ColorSpacena tinukoy ng cspace. Halimbawa :
Maaaring gamitin ng mga developer ng Java ang pamamaraang ito upang ibalik ang espasyo ng kulay para sa napiling kulay. Ang isa pang paraan para makakuha ng color space para sa isang naibigay na entry ay sa pamamagitan ng paglalapat ng Arrays.to.String. Ito ay isang mas kumplikadong diskarte, tulad ng makikita sa halimbawa sa ibaba: Mga Halimbawa :
Inilapat ng mga developer ng Java ang pamamaraang ito upang lumikha ng isang bagong bagay na may kulay batay sa mga halaga ng modelong HSB. Halimbawa :
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()
Ibinabalik ng Java method na ito ang value ng green component para sa kulay na iyong ginawa. Ang lahat ng mga halaga ay magkasya sa loob ng hanay na tumutugma sa berde sa scheme ng kulay ng RGB. Halimbawa :
Color clickBoxColor =newColor(color.getRed(), color.getGreen(), color.getBlue(),20);
getRed()
Katulad ng getGreen(), getRedibinabalik ang halaga para sa pulang bahagi ng isang ibinigay na kulay. Nakita mo na kung paano inilapat ang pamamaraan sa halimbawa sa itaas.
getBlue()
Ibinabalik ng pamamaraang ito ang halaga ng asul sa loob ng hanay ng mga halaga ng scheme ng kulay ng RGB. Gayundin, para sa halimbawa ng paggamit ng getBlue(), tingnan ang paglalarawan ng getGreen().
getAlpha()
Ang getAlpha() method ay ginagamit sa Java kapag gusto ng developer na mahanap ang alpha value ng isang partikular na kulay. Katulad ng RBG, ang mga alpha ng lahat ng kulay ay nasa loob ng 0-255 na hanay. Halimbawa : narito kung paano getAlpha()ginamit bilang bahagi ng isang loop.
int alpha = color.getAlpha();if(alpha !=255){setStrokeAlpha(alpha);
strokeAlphaSet =true;
getTransparency()
Ibinabalik ng pamamaraang ito ang halaga ng transparency na tinukoy mo o ng isa pang developer para sa kulay kapag ginagawa ito. Halimbawa :
Ang pamamaraang ito ay lubos na kapaki-pakinabang kung ikaw ay naghahambing ng dalawang kulay sa isa't isa. Nagbibigay-daan ito sa mga developer ng Java na malaman kung ang dalawang bagay na may kulay ay may pantay na halaga. Halimbawa :
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));}}
katumbas ng(Object obj)
Katulad ng boolean equals(Object obj), ang isang ito ay isang comparative method. Ginagamit namin ito upang matukoy kung ang mga bagay na may kulay ay katumbas ng bawat isa. Halimbawa :
Object a =newObject();Object b =newObject();return(a.equals(b));
Gabay sa Mga Pangunahing Kulay na Ginamit sa Java
Ngayon na mayroon ka nang pag-unawa sa mga pamamaraan na ginagamit upang manipulahin ang mga kulay sa Java, tingnan natin ang mga uri ng field na iyong gagawin. Ito ang mga aktwal na static na kulay na maaaring tukuyin ng mga developer ng Java. Maaari mong tukuyin ang isang kulay sa pamamagitan ng paglalagay ng pangalan nito (siguraduhing ipasok mo ito nang eksakto sa paraan ng pagkakasulat nito sa opisyal na dokumentasyon) o pagtukoy sa halaga ng RGB nito. Tingnan natin ang ginagamit ng mga developer ng palette:
Pangalan ng field
Paglalarawan
static na kulay itim (BLACK)
Tinutukoy ang itim na kulay
static na kulay puti (WHITE)
Tinutukoy ang puting kulay
static na kulay asul (BLUE)
Ginagamit upang tukuyin ang asul
static na kulay grey (GRAY)
Tinutukoy ang kulay abong kulay
static na kulay darkgray (DARK_GRAY)
Tinutukoy ang isang mas madilim na lilim ng kulay abo
static na kulay lightGray (LIGHT_GRAY)
Tinutukoy ang mas magaan na lilim ng kulay abo
static na kulay berde (BERDE)
Ginagamit upang tukuyin ang berdeng kulay
static na Kulay ng magenta (MAGENTA)
Tinutukoy ang magenta shade
static na Kulay pink (PINK)
Tinutukoy ang pink sa Java
static na Kulay kahel (ORANGE)
Lumilikha ng orange na kulay sa Java
static na Kulay dilaw (DILAW)
Ginagamit upang tukuyin ang dilaw
static na Kulay pula (RED)
Tinutukoy ang pulang kulay sa Java
Mga Problema sa Pagsasanay Para sa Paggamit ng AWT.Color sa Java
Nararamdaman mo ba na mayroon kang matibay na pundasyon ng AWT Color sa Java? Subukan natin ang mga kasanayang ito sa pamamagitan ng paglutas ng ilang praktikal na problema - dito, kakailanganin mong maglapat ng mga constructor at karaniwang pamamaraan, pati na rin ang iba pang mga tool sa Java na hindi nauugnay sa kulay. Practice problema #1 . Gumawa ng custom na component na nagbibigay-daan sa user ng program na mag-tweak ng mga antas ng RGB sa isang kulay (katulad ng RGBColorChooser). Tiyaking isama ang getColor() sa iyong mga bahagi. Gawing subclass ng Panel ang bahagi, hindi isang applet. Sagot : ito ay isang medyo kumplikadong problema - hatiin natin ito sa mga mapapamahalaang hakbang:
I-convert ang isang RGBChoosersa isang bahagi.
Magdagdag ng bagong routine sa component - getColor().
Idagdag setColor()para itakda ang kulay.
Narito ang sample code na dapat mong makuha sa pagtatapos ng araw:
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
Konklusyon
Binabati kita, nalampasan mo ang malawak na gabay na ito sa AWT.Color sa Java. Ngayon, magiging mas madali ang paghawak ng mga interface. Huwag kalimutang ilapat ang iyong kaalaman sa pamamagitan ng paglutas ng mga problema sa pagsasanay at mga pagsusulit sa CodeGym. Ang pagsasanay ay nagiging perpekto kaya bigyan ang mga sample na problema sa iyong pinakamahusay na pagbaril!