CodeGym /Blog Java /rawak /Java.Awt.Kelas Warna
John Squirrels
Tahap
San Francisco

Java.Awt.Kelas Warna

Diterbitkan dalam kumpulan
Jika anda menguasai Java Abstract Toolkit, anda perlu mempelajari aplikasi Java AWT Color Class. Oleh kerana terdapat banyak pembina dan kaedah yang terlibat, ia mungkin berasa menakutkan pada mulanya. Tetapi jangan risau, kami membantu anda:) Dengan senarai penuh tentang Java AWT Color ini, anda akan belajar cara mencipta jenis warna baharu dan mengurusnya dalam masa yang singkat. Kami juga akan menawarkan beberapa ujian latihan yang akan membantu anda mengasah kemahiran anda.

Apakah Kelas Warna AWT di Jawa?

Tujuan utama AWT Color adalah untuk membolehkan pembangun mencipta warna baharu menggunakan kod Java menggunakan pakej RGB (merah, hijau, biru), RGBA (merah, hijau, biru, alfa), atau HSB (warna, tepu, komponen BRI). Kelas mengandungi dua nilai - kod teduh dan nilai kelegapan/ketelusan. Java.Awt.Color Class - 1Begini cara anda mengisytiharkan Kelas java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
Untuk mengisytiharkan pelbagai jenis warna menggunakan Class.java.awt.Color, pembangun menggunakan pembina - kami akan melihatnya sekarang.

AWT.Color Constructors di Jawa

Bergantung pada parameter warna yang anda ingin buat, anda perlu menggunakan jenis pembina warna tertentu. Terdapat segelintir daripada ini - mari kita periksa satu persatu.
  • Color(float r, float g, float b)ialah kelas yang anda gunakan untuk menentukan warna dalam skema warna RGB yang legap. Anda boleh menentukan julat warna di mana-mana antara 0.0 dan 0.1.
  • Color(float r, float b, float g, float a)ialah kelas yang mentakrifkan warna RGBA (julat nilai yang tersedia ialah 0.0 dan 0.1).
  • Color(ColorSpace c, float[], co, float a)mentakrifkan warna dalam ColorSpace yang anda tentukan terlebih dahulu. Pembangun menentukan julat komponen warna dalam tatasusunan apungan alfa yang ditentukan.
  • Color(int, rgb)ialah kelas mencipta warna RGB (legap). Pastikan anda memberi perhatian kepada nilai komponen pembina - 16-23 untuk merah, 8-15 untuk hijau, 0-7 untuk biru.
  • Color(int r, int g, int b)- kaedah yang digunakan untuk menentukan warna RGB legap. Nilai warna harus terletak antara 0 dan 255.
  • Color(int r, int g, int b, int a)- mencipta warna dalam skema RGBA (0-255).
  • Color(int rgba, boolean b)digunakan untuk mencipta warna sRGB dalam nilai gabungan yang ditentukan. Julat nilai menjangkau 24-31 untuk alfa, 16-23 untuk merah, 8-15 untuk hijau dan 0-7 untuk biru.
Selain daripada itu, class.awt.color beroperasi dengan medan, diwarisi daripada Java.awt.Transparency:
  • TRANSLUCENTmewakili sama ada warna itu mengandungi nilai alfa atau tidak dan mempunyai dua nilai - 0 dan 1.
  • OPAQUEmemberikan nilai alfa 1 kepada objek yang menjamin kelegapan lengkapnya.
  • BITMASKmewakili kelegapan mutlak atau nilai ketelusan dan terletak dalam julat (0;1) dengan 0 ialah ketelusan penuh dan 1 ialah kelegapan yang melampau.

15 Kaedah Teratas untuk Digunakan Dengan Kelas Warna AWT Java

Untuk memanipulasi warna, laraskan kegelapan atau kecerahannya, pembangun Java bergantung pada kaedah yang berbeza. Terdapat berpuluh-puluh daripadanya jadi anda tidak perlu mempelajari semuanya dengan hati. Walau bagaimanapun, apabila merujuk kepada kaedah Warna AWT Java yang paling banyak digunakan, kami mengecilkan senarai itu kepada lima belas. Mengingati ini tanpa perlu merujuk dokumentasi API Java akan membantu pembangun.

lebih gelap()

Kaedah ini digunakan untuk mencipta warna baharu yang merupakan versi lebih gelap daripada warna yang telah anda tentukan. Contoh :

Color.green.darker()
Jika memohon darker()sekali sahaja tidak mencukupi untuk mencipta teduhan yang anda perlukan, sila gunakan semula kaedah ini seberapa banyak kali yang anda mahu, seperti yang ditunjukkan di bawah:

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

lebih terang()

Seperti namanya, Color brighter()digunakan untuk mencerahkan naungan yang sudah anda miliki. Begitu juga dengan darker(), ia boleh digunakan beberapa kali setiap satu warna. Contoh :

Color myColor = Color.RED;          

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

int getAlpha()

Jika anda ingin mengembalikan komponen alfa warna anda, gunakan kaedah ini. Perlu diingat bahawa nilai alfa terletak dalam julat 0-255. Berikut ialah contoh aplikasi dan pemulangan kaedah. Contoh :

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

Warna statik getColor(String nm)

Pembangun Java boleh menggunakan kaedah ini untuk mencari warna menggunakan sifat sistem. Terdapat kaedah lain yang mengendalikan objektif yang sama:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

nyahkod Warna statik (rentetan nm)

Kaedah ini digunakan memaparkan warna sebagai rentetan. Selepas penukaran selesai, pembangun akan mendapat warna legap yang ditentukan. Contoh :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

PaintContext createContext(ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform xform, RenderingHints hints)

Kaedah ini kelihatan rumit tetapi lebih mudah untuk dimanipulasi daripada yang kelihatan. Paint Context CreateContext()digunakan untuk menentukan corak warna pepejal yang berulang. Contoh :

 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)

Ini ialah kaedah Java yang anda boleh gunakan pada warna untuk mengembalikan tatasusunan apungan dan komponen alfanya. Kaedah ini terpakai kepada yang ColorSpaceditentukan oleh cspace. Contoh :

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

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

Pembangun Java boleh menggunakan kaedah ini untuk mengembalikan ruang warna untuk warna yang dipilih. Satu lagi cara untuk mendapatkan ruang warna untuk entri yang diberikan ialah dengan menggunakan Arrays.to.String. Ini adalah strategi yang lebih kompleks, seperti yang dilihat dalam contoh di bawah: Contoh :

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)

Pembangun Java menggunakan kaedah ini untuk mencipta objek warna baharu berdasarkan nilai model HSB. Contoh :

 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()

Kaedah Java ini mengembalikan nilai komponen hijau untuk warna yang anda buat. Semua nilai sesuai dalam julat yang sepadan dengan hijau dalam skema warna RGB. Contoh :

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

getRed()

Begitu juga dengan getGreen(), getRedmengembalikan nilai untuk komponen merah warna tertentu. Anda telah melihat cara kaedah itu digunakan dalam contoh di atas.

getBlue()

Kaedah ini mengembalikan nilai biru dalam julat nilai skema warna RGB. Begitu juga, untuk contoh penggunaan getBlue(), lihat perihalan getGreen().

getAlpha()

Kaedah getAlpha() digunakan dalam Java apabila pembangun ingin mencari nilai alfa warna tertentu. Begitu juga dengan RBG, alfa semua warna terletak dalam julat 0-255. Contoh : begini caranya getAlpha()digunakan sebagai sebahagian daripada gelung.

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

getTransparency()

Kaedah ini mengembalikan nilai ketelusan yang anda atau pembangun lain telah tentukan untuk warna semasa menciptanya. Contoh :

public int getTransparency() {

return myColor.getTransparency();

boolean equals(Object obj)

Kaedah ini sangat berguna jika anda membandingkan dua warna antara satu sama lain. Ia membolehkan pembangun Java mengetahui sama ada dua objek warna mempunyai nilai yang sama. Contoh :

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

sama (obj objek)

Begitu juga dengan boolean equals(Object obj), yang ini adalah kaedah perbandingan. Kami menggunakannya untuk menentukan sama ada objek berwarna sama antara satu sama lain. Contoh :

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

Panduan Warna Utama yang Digunakan dalam Java

Sekarang setelah anda memahami kaedah yang digunakan untuk memanipulasi warna dalam Java, mari kita lihat jenis medan yang akan anda gunakan. Ini ialah warna statik sebenar yang boleh ditentukan oleh pembangun Java. Anda boleh sama ada mentakrifkan warna dengan memasukkan namanya (pastikan anda memasukkannya betul-betul cara ia ditulis dalam dokumentasi rasmi) atau menyatakan nilai RGBnya. Mari kita lihat pada pemaju palet yang digunakan:
Nama medan Penerangan
warna statik hitam (BLACK) Mentakrifkan warna hitam
warna statik putih (PUTIH) Mentakrifkan warna putih
warna statik biru (BIRU) Digunakan untuk mentakrifkan biru
warna statik kelabu (KELABU) Mentakrifkan warna kelabu
warna statik kelabu gelap (DARK_GRAY) Mentakrifkan warna kelabu yang lebih gelap
warna statik kelabu muda (LIGHT_GRAY) Mentakrifkan warna kelabu yang lebih terang
warna statik hijau (HIJAU) Digunakan untuk menentukan warna hijau
magenta warna statik (MAGENTA) Mentakrifkan naungan magenta
statik Warna merah jambu (MEJA MERAH) Mentakrifkan merah jambu di Jawa
Warna oren statik (OREN) Mencipta warna oren di Jawa
statik Warna kuning (KUNING) Digunakan untuk mentakrifkan kuning
statik Warna merah (MERAH) Mentakrifkan warna merah dalam Java

Amalan Masalah Untuk Menggunakan AWT.Color dalam Java

Adakah anda merasakan anda mempunyai asas AWT Color yang kukuh di Jawa? Mari uji kemahiran ini dengan menyelesaikan beberapa masalah praktikal - di sini, anda perlu menggunakan pembina dan kaedah biasa, serta alatan Java bukan berkaitan warna yang lain. Amalkan masalah #1 . Buat komponen tersuai yang membolehkan pengguna program mengubah tahap RGB dalam warna (serupa dengan RGBColorChooser). Pastikan anda memasukkan getColor() ke dalam komponen anda. Jadikan komponen sebagai subkelas Panel, bukan applet. Jawapan : ini adalah masalah yang agak kompleks - mari kita pecahkan kepada langkah-langkah yang boleh diurus:
  1. Tukar an RGBChooserkepada komponen.
  2. Tambah rutin baharu pada komponen - getColor().
  3. Tambah setColor()untuk menetapkan warna.
Berikut ialah kod contoh yang perlu anda dapatkan pada penghujung hari:

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

Kesimpulan

Tahniah, anda telah melalui panduan luas ini tentang AWT.Color di Jawa. Kini, pengendalian antara muka akan menjadi lebih mudah. Jangan lupa gunakan pengetahuan anda dengan menyelesaikan masalah latihan dan kuiz CodeGym. Amalan membuat sempurna jadi berikan masalah sampel pukulan terbaik anda!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION