CodeGym /Java Blogu /Rastgele /Java.Awt.Color Sınıfı
John Squirrels
Seviye
San Francisco

Java.Awt.Color Sınıfı

grupta yayınlandı
Java Abstract Toolkit'te uzmanlaşıyorsanız, Java AWT Color Class uygulamalarını öğrenmeniz gerekecektir. Dahil olan birçok kurucu ve yöntem olduğundan, ilk başta korkutucu gelebilir. Ama merak etmeyin, biz hallederiz :) Java AWT Color hakkındaki bu tam özet ile, yeni bir renk türünü nasıl oluşturacağınızı ve onu çok kısa sürede yöneteceğinizi öğreneceksiniz. Ayrıca becerilerinizi geliştirmenize yardımcı olacak birkaç uygulama testi sunacağız.

Java'da AWT Renk Sınıfı Nedir?

AWT Color'ın birincil amacı, geliştiricilerin RGB (kırmızı, yeşil, mavi), RGBA (kırmızı, yeşil, mavi, alfa) veya HSB (renk tonu, doygunluk, BRI bileşenleri) paketleri kullanarak Java kodunu kullanarak yeni renkler oluşturmasına olanak sağlamaktır. Sınıf iki değer içerir - gölgenin kodu ve opaklık/saydamlık değeri. Java.Awt.Color Sınıfı - 1Java.awt.Color Sınıfını şu şekilde ilan edersiniz:

public class Color
   extends Object
      implements Paint, Serializable
Geliştiriciler, Class.java.awt.Color kullanarak farklı renk türlerini bildirmek için yapıcılar kullanır - şimdi onlara bir göz atacağız.

Java'da AWT.Color Yapıcıları

Oluşturmak istediğiniz rengin parametresine bağlı olarak, belirli bir renk oluşturucu türü kullanmanız gerekir. Bunlardan bir avuç var - teker teker inceleyelim.
  • Color(float r, float g, float b)RGB renk düzeninde opak olan bir rengi tanımlamak için kullandığınız sınıftır. Renk aralığını 0,0 ile 0,1 arasında herhangi bir yerde belirleyebilirsiniz.
  • Color(float r, float b, float g, float a)bir RGBA rengini tanımlayan sınıftır (mevcut değerler aralığı 0,0 ve 0,1'dir).
  • Color(ColorSpace c, float[], co, float a)önceden belirlediğiniz ColorSpace'te bir renk tanımlar. Bir geliştirici, tanımlı bir alfanın kayan dizisindeki renk bileşenlerinin aralığını belirtir.
  • Color(int, rgb)RGB rengi (opak) oluşturan bir sınıftır. Yapıcının bileşen değerine dikkat ettiğinizden emin olun - kırmızı için 16-23, yeşil için 8-15, mavi için 0-7.
  • Color(int r, int g, int b)- opak bir RGB rengini tanımlamak için kullanılan bir yöntem. Rengin değeri 0 ile 255 arasında olmalıdır.
  • Color(int r, int g, int b, int a)- RGBA şemasında (0-255) bir renk oluşturur.
  • Color(int rgba, boolean b)tanımlanmış bir birleştirilmiş değer içinde sRGB renkleri oluşturmak için kullanılır. Değer aralığı alfa için 24-31, kırmızı için 16-23, yeşil için 8-15 ve mavi için 0-7'dir.
Bunun dışında class.awt.color, şuradan devralınan alanlarla çalışır Java.awt.Transparency:
  • TRANSLUCENTrengin alfa değerleri içerip içermediğini ve iki değere sahip olup olmadığını gösterir - 0 ve 1.
  • OPAQUEtam opaklığını garanti eden nesneye 1 alfa değerini atar.
  • BITMASKmutlak opaklık veya şeffaflık değerini temsil eder ve (0;1) aralığında yer alır; burada 0 tam şeffaflık ve 1 aşırı opaklıktır.

Java AWT Renk Sınıfı ile Kullanılacak En İyi 15 Yöntem

Java geliştiricileri, bir rengi işlemek, koyuluğunu veya parlaklığını ayarlamak için farklı yöntemler kullanır. Düzinelerce var, bu yüzden hepsini ezberlemek zorunda değilsin. Ancak, en yaygın kullanılan Java AWT Renk yöntemlerine gelince, listeyi on beşe indirdik. Java API belgelerine başvurmak zorunda kalmadan bunları hatırlamak, geliştiricilere yardımcı olacaktır.

daha koyu()

Yöntem, önceden tanımladığınız rengin daha koyu bir versiyonu olan yeni bir renk oluşturmak için kullanılır. Örnek :

Color.green.darker()
İhtiyacınız olan gölgeyi oluşturmak için bir kez uygulamak darker()yeterli değilse, yöntemi aşağıda gösterildiği gibi istediğiniz kadar tekrar uygulamaktan çekinmeyin:

Color.green.darker().darker().darker().darker().darker()

daha parlak()

Adından da anlaşılacağı gibi, Color brighter()zaten sahip olduğunuz gölgeyi aydınlatmak için kullanılır. Benzer şekilde darker(), tek renk başına birden çok kez kullanılabilir. Örnek :

Color myColor = Color.RED;          

    JLabel label = new JLabel("First Name");
    label.setForeground(myColor.brighter());

int getAlpha()

Renginizin alfa bileşenini döndürmek istiyorsanız bu yöntemi kullanın. Alfa değerlerinin 0-255 aralığında olduğunu unutmayın. İşte yöntemin uygulama ve dönüş örneği. Örnek :

alpha = Color.black.getAlpha();
return new Color(components[0], components[1], components[2], alpha);

statik Renk getColor(Dize nm)

Java geliştiricileri, sistem özelliklerini kullanarak bir rengi bulmak için bu yöntemi kullanabilir. Benzer hedefleri ele alan başka yöntemler de vardır:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

statik Renk kodu çözme (dize nm)

Bu yöntem, bir rengi dize olarak görüntülemek için kullanılır. Dönüştürme tamamlandıktan sonra, bir geliştirici tanımlı bir opak renk alacaktır. Örnek :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

PaintContext createContext(ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform xform, RenderingHints ipuçları)

Bu yöntem karmaşık görünüyor, ancak manipüle edilmesi göründüğünden daha kolay. Paint Context CreateContext()tekrarlanan bir düz renk desenini tanımlamak için kullanılır. Örnek :

 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)

Bu, kayan dizisini ve alfa bileşenlerini döndürmek için bir renge uygulayabileceğiniz bir Java yöntemidir. Yöntem, ColorSpacecspace tarafından tanımlanan bir veriye uygulanır. Örnek :

public float[] getComponents(ColorSpace cspace, float[] compArray) {

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

Java geliştiricileri, seçilen bir rengin renk alanını döndürmek için bu yöntemi kullanabilir. Belirli bir giriş için bir renk alanı elde etmenin başka bir yolu da Arrays.to.String'i uygulamaktır. Bu, aşağıdaki örnekte görüldüğü gibi daha karmaşık bir stratejidir: Örnekler :

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(kayan nokta h, kayan nokta s, kayan nokta b)

Java geliştiricileri, HSB modelinin değerlerine dayalı yeni bir renk nesnesi oluşturmak için bu yöntemi uygular. Örnek :

 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.

getGreen()

Bu Java yöntemi, oluşturduğunuz renk için yeşil bileşenin değerini döndürür. Tüm değerler, RGB renk düzeninde yeşile karşılık gelen aralığa sığar. Örnek :

Color clickBoxColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), 20);

kızarmak()

benzer şekilde getGreen(), getRedbelirli bir rengin kırmızı bileşeninin değerini döndürür. Yukarıdaki örnekte yöntemin nasıl uygulandığını zaten gördünüz.

getBlue()

Bu yöntem, RGB renk düzeninin değer aralığı içinde mavinin değerini döndürür. Aynı şekilde, kullanım örneği için getBlue(), açıklamasına bakın getGreen().

getAlpha()

Java'da getAlpha() yöntemi, bir geliştirici belirli bir rengin alfa değerini bulmak istediğinde kullanılır. RBG'ye benzer şekilde, tüm renklerin alfaları 0-255 aralığındadır. Örnek : işte nasıl getAlpha()bir döngünün parçası olarak kullanıldığı.

int alpha = color.getAlpha();
	if (alpha != 255)
	{
		setStrokeAlpha(alpha);
		strokeAlphaSet = true;

GetTransparency()

Bu yöntem, sizin veya başka bir geliştiricinin rengi oluştururken belirttiği şeffaflık değerini döndürür. Örnek :

public int getTransparency() {

return myColor.getTransparency();

boole eşittir(Nesne nesnesi)

Bu yöntem, iki rengi birbiriyle karşılaştırıyorsanız oldukça kullanışlıdır. Java geliştiricilerinin iki renkli nesnenin eşit değerlere sahip olup olmadığını bilmesini sağlar. Örnek :

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));
  }
}

eşittir(Nesne nesnesi)

Benzer şekilde boolean equals(Object obj), bu bir karşılaştırmalı yöntemdir. Renkli nesnelerin birbirine eşit olup olmadığını belirlemek için kullanırız. Örnek :

Object a = new Object(); Object b = new Object(); return(a.equals(b));

Java'da Kullanılan Ana Renkler Rehberi

Artık Java'da renkleri işlemek için kullanılan yöntemleri anladığınıza göre, birlikte çalışacağınız alan türlerine bir göz atalım. Bunlar, Java geliştiricilerinin tanımlayabileceği gerçek statik renklerdir. Bir rengi adını girerek (tam olarak resmi belgelerde yazıldığı şekilde girdiğinizden emin olun) veya RGB değerini belirterek tanımlayabilirsiniz. Geliştiricilerin kullandığı palete bir göz atalım:
Alan adı Tanım
statik renk siyah (SİYAH) Siyah rengi tanımlar
statik renk beyaz (BEYAZ) Beyaz rengi tanımlar
statik renk mavi (MAVİ) maviyi tanımlamak için kullanılır
statik renk gri (GRİ) Gri rengi tanımlar
statik renk koyu gri (DARK_GRAY) Grinin daha koyu bir tonunu tanımlar
statik renk açıkGri (LIGHT_GRAY) Daha açık bir gri tonu tanımlar
statik renk yeşil (YEŞİL) Yeşil rengi tanımlamak için kullanılır
statik Renk macenta (MAGENTA) Macenta gölgeyi tanımlar
statik Renk pembe (PEMBE) Java'da pembeyi tanımlar
statik Renk turuncu (TURUNCU) Java'da turuncu rengi oluşturur
statik Renk sarı (SARI) Sarıyı tanımlamak için kullanılır
statik Renk kırmızı (KIRMIZI) Java'da kırmızı rengi tanımlar

Java'da AWT.Color Kullanmak İçin Pratik Problemler

Java'da sağlam bir AWT Color temeline sahip olduğunuzu düşünüyor musunuz? Birkaç pratik problemi çözerek bu becerileri test edelim - burada, oluşturucuları ve genel yöntemleri ve ayrıca renkle ilgili olmayan diğer Java araçlarını uygulamanız gerekecek. Pratik problem #1 . Bir program kullanıcısının RGB seviyelerini bir renkte düzenlemesine izin veren özel bir bileşen oluşturun ( 'ye benzer RGBColorChooser). Bileşenlerinize getColor() öğesini eklediğinizden emin olun. Bileşeni bir uygulama değil, bir Panel alt sınıfı yapın. Cevap : Bu oldukça karmaşık bir problem - hadi onu yönetilebilir adımlara ayıralım:
  1. RGBChooseran'ı bileşene dönüştürün .
  2. Bileşene yeni bir rutin ekleyin - getColor().
  3. setColor()Rengi ayarlamak için ekleyin .
İşte günün sonunda almanız gereken örnek kod:

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

Çözüm

Tebrikler, Java'da AWT.Color ile ilgili bu kapsamlı kılavuzu tamamladınız. Artık arayüzleri kullanmak çok daha kolay olacak. Alıştırma problemlerini ve CodeGym sınavlarını çözerek bilginizi uygulamayı unutmayın. Alıştırma mükemmelleştirir, bu yüzden elinizden gelenin en iyisini yapmak için örnek problemler verin!
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION