CodeGym /Blog Java /Ngẫu nhiên /Lớp Java.Awt.Color

Lớp Java.Awt.Color

Xuất bản trong nhóm
Nếu bạn đang thành thạo Bộ công cụ trừu tượng Java, bạn sẽ phải tìm hiểu các ứng dụng của Lớp màu Java AWT. Vì có rất nhiều hàm tạo và phương thức liên quan nên thoạt đầu có thể cảm thấy đáng sợ. Nhưng đừng lo, chúng tôi đã hỗ trợ bạn :) Với bản tóm tắt đầy đủ này về Java AWT Color, bạn sẽ học cách tạo một loại màu mới và quản lý nó ngay lập tức. Chúng tôi cũng sẽ cung cấp một số bài kiểm tra thực hành để giúp bạn trau dồi kỹ năng của mình.

Lớp màu AWT trong Java là gì?

Mục đích chính của AWT Color là cho phép các nhà phát triển tạo các màu mới bằng cách sử dụng mã Java bằng cách sử dụng các gói RGB (đỏ, lục, lam), RGBA (đỏ, lục, lam, alpha) hoặc HSB (màu sắc, độ bão hòa, các thành phần BRI). Lớp này chứa hai giá trị - mã của bóng râm và giá trị của độ mờ/độ trong suốt. Lớp Java.Awt.Color - 1Đây là cách bạn khai báo Lớp java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
Để khai báo các loại màu khác nhau bằng cách sử dụng Class.java.awt.Color, các nhà phát triển sử dụng hàm tạo - chúng ta sẽ xem xét chúng ngay bây giờ.

AWT.Color Constructor trong Java

Tùy thuộc vào tham số của màu bạn muốn tạo, bạn sẽ cần sử dụng một loại hàm tạo màu cụ thể. Có một số ít trong số này - hãy kiểm tra từng cái một.
  • Color(float r, float g, float b)là lớp bạn sử dụng để xác định màu trong bảng màu RGB mờ đục. Bạn có thể chỉ định phạm vi màu ở bất kỳ đâu trong khoảng từ 0,0 đến 0,1.
  • Color(float r, float b, float g, float a)là lớp xác định màu RGBA (phạm vi giá trị khả dụng là 0,0 và 0,1).
  • Color(ColorSpace c, float[], co, float a)xác định một màu trong ColorSpace mà bạn chỉ định trước. Nhà phát triển chỉ định phạm vi thành phần màu trong mảng float của một alpha đã xác định.
  • Color(int, rgb)là lớp tạo màu RGB (đục). Đảm bảo chú ý đến giá trị thành phần của hàm tạo - 16-23 cho màu đỏ, 8-15 cho màu xanh lá cây, 0-7 cho màu xanh lam.
  • Color(int r, int g, int b)- một phương pháp được sử dụng để xác định màu RGB mờ. Giá trị của màu phải nằm trong khoảng từ 0 đến 255.
  • Color(int r, int g, int b, int a)- tạo màu trong lược đồ RGBA (0-255).
  • Color(int rgba, boolean b)được sử dụng để tạo màu sRGB trong một giá trị kết hợp đã xác định. Phạm vi giá trị kéo dài từ 24-31 cho alpha, 16-23 cho màu đỏ, 8-15 cho màu xanh lá cây và 0-7 cho màu xanh lam.
Ngoài ra, class.awt.color hoạt động với các trường, được kế thừa từ Java.awt.Transparency:
  • TRANSLUCENTđại diện cho việc màu có chứa giá trị alpha hay không và có hai giá trị - 0 và 1.
  • OPAQUEgán giá trị alpha là 1 cho đối tượng để đảm bảo nó hoàn toàn mờ đục.
  • BITMASKđại diện cho giá trị độ trong suốt hoặc độ trong suốt tuyệt đối và nằm trong phạm vi (0;1) trong đó 0 là độ trong suốt hoàn toàn và 1 là độ mờ đục cực độ.

15 phương pháp hàng đầu để sử dụng với Java AWT Color Class

Để thao tác một màu, điều chỉnh độ tối hoặc độ sáng của nó, các nhà phát triển Java dựa vào các phương pháp khác nhau. Có hàng chục trong số đó, vì vậy bạn không cần phải học thuộc lòng tất cả chúng. Tuy nhiên, khi nói đến các phương pháp Java AWT Color được sử dụng rộng rãi nhất, chúng tôi đã thu hẹp danh sách xuống còn mười lăm. Ghi nhớ những điều này mà không cần phải tham khảo tài liệu API Java sẽ hữu ích cho các nhà phát triển.

đậm hơn()

Phương pháp này được sử dụng để tạo một màu mới là phiên bản tối hơn của màu bạn đã xác định. Ví dụ :

Color.green.darker()
Nếu áp dụng darker()một lần không đủ để tạo ra sắc thái bạn cần, vui lòng áp dụng lại phương pháp này bao nhiêu lần tùy thích, như minh họa bên dưới:

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

sáng hơn()

Như tên cho thấy, Color brighter()được sử dụng để làm sáng màu bạn đã có. Tương tự như darker(), nó có thể được sử dụng nhiều lần cho mỗi màu. Ví dụ :

Color myColor = Color.RED;          

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

int getAlpha()

Nếu bạn muốn trả về thành phần alpha của màu của mình, hãy sử dụng phương pháp này. Hãy nhớ rằng các giá trị alpha nằm trong phạm vi 0-255. Đây là ví dụ về ứng dụng và trả về của phương thức. Ví dụ :

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

Màu tĩnh getColor (Chuỗi nm)

Các nhà phát triển Java có thể sử dụng phương pháp này để định vị màu bằng các thuộc tính hệ thống. Có các phương pháp khác xử lý các mục tiêu tương tự:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

Giải mã màu tĩnh (chuỗi nm)

Phương pháp này được sử dụng để hiển thị màu dưới dạng chuỗi. Sau khi quá trình chuyển đổi hoàn tất, nhà phát triển sẽ nhận được một màu mờ đã xác định. Ví dụ :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

PaintContext createContext(ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform xform, gợi ý RenderingHints)

Phương pháp này trông có vẻ phức tạp nhưng lại dễ thao tác hơn bạn tưởng. Paint Context CreateContext()được sử dụng để xác định một mẫu màu đồng nhất lặp đi lặp lại. Ví dụ :

 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)

Đây là một phương thức Java mà bạn có thể áp dụng cho một màu để trả về các thành phần alpha và mảng float của nó. Phương pháp áp dụng cho một định ColorSpacenghĩa nhất định bởi cspace. Ví dụ :

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

return myColor.getComponents(cspace, compArray);

}

Không gian màu getColorSpace()

Các nhà phát triển Java có thể sử dụng phương pháp này để trả lại không gian màu cho một màu đã chọn. Một cách khác để có không gian màu cho một mục nhất định là áp dụng Arrays.to.String. Đây là một chiến lược phức tạp hơn, như được thấy trong ví dụ dưới đây: Ví dụ :

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)

Các nhà phát triển Java áp dụng phương pháp này để tạo một đối tượng màu mới dựa trên các giá trị của mô hình HSB. Ví dụ :

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

Phương thức Java này trả về giá trị của thành phần màu lục cho màu bạn đã tạo. Tất cả các giá trị nằm trong phạm vi tương ứng với màu xanh lục trong bảng màu RGB. Ví dụ :

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

getRed()

Tương tự như getGreen(), getRedtrả về giá trị cho thành phần màu đỏ của một màu nhất định. Bạn đã thấy phương pháp này được áp dụng như thế nào trong ví dụ trên.

getBlue()

Phương thức này trả về giá trị của màu xanh lam trong phạm vi giá trị của bảng màu RGB. Tương tự như vậy, để biết ví dụ về cách sử dụng getBlue(), hãy xem mô tả về getGreen().

getAlpha()

Phương thức getAlpha() được sử dụng trong Java khi nhà phát triển muốn tìm giá trị alpha của một màu nhất định. Tương tự như RBG, bảng chữ cái của tất cả các màu nằm trong phạm vi 0-255. Ví dụ : đây là cách getAlpha()được sử dụng như một phần của vòng lặp.

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

getTransparency()

Phương thức này trả về giá trị độ trong suốt mà bạn hoặc nhà phát triển khác đã chỉ định cho màu khi tạo. Ví dụ :

public int getTransparency() {

return myColor.getTransparency();

boolean bằng (Đối tượng obj)

Phương pháp này rất hữu ích nếu bạn đang so sánh hai màu với nhau. Nó cho phép các nhà phát triển Java biết liệu hai đối tượng màu có giá trị bằng nhau hay không. Ví dụ :

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

bằng (Đối tượng obj)

Tương tự như boolean equals(Object obj), đây là một phương pháp so sánh. Chúng tôi sử dụng nó để xác định xem các đối tượng màu có bằng nhau hay không. Ví dụ :

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

Hướng dẫn về các màu chính được sử dụng trong Java

Bây giờ bạn đã hiểu về các phương thức được sử dụng để thao tác màu trong Java, hãy xem các loại trường mà bạn sẽ làm việc. Đây là những màu tĩnh thực tế mà các nhà phát triển Java có thể xác định. Bạn có thể xác định một màu bằng cách nhập tên của nó (đảm bảo rằng bạn nhập nó chính xác theo cách nó được viết trong tài liệu chính thức) hoặc chỉ định giá trị RGB của nó. Chúng ta hãy xem các nhà phát triển bảng màu sử dụng:
tên trường Sự miêu tả
tĩnh màu đen (BLACK) Xác định màu đen
tĩnh màu trắng (WHITE) Xác định màu trắng
tĩnh màu xanh lam (BLUE) Được sử dụng để xác định màu xanh
màu xám tĩnh (XÁM) Xác định màu xám
màu tĩnh xám đậm (DARK_GRAY) Xác định một màu xám đậm hơn
màu tĩnh lightGrey (LIGHT_GRAY) Xác định một màu xám nhạt hơn
màu tĩnh xanh lục (GREEN) Được sử dụng để xác định màu xanh lá cây
tĩnh Màu đỏ tươi (MAGENTA) Xác định bóng magenta
tĩnh Màu hồng (PINK) Xác định màu hồng trong Java
tĩnh Màu cam (ORANGE) Tạo màu cam trong Java
tĩnh Màu vàng (YELLOW) Được sử dụng để xác định màu vàng
tĩnh Màu đỏ (RED) Xác định màu đỏ trong Java

Các vấn đề thực hành để sử dụng AWT.Color trong Java

Bạn có cảm thấy mình có nền tảng vững chắc về AWT Color trong Java không? Hãy kiểm tra những kỹ năng này bằng cách giải quyết một số vấn đề thực tế - tại đây, bạn sẽ phải áp dụng hàm tạo và các phương thức phổ biến, cũng như các công cụ Java không liên quan đến màu sắc khác. Vấn đề thực hành số 1 . Tạo một thành phần tùy chỉnh cho phép người dùng chương trình điều chỉnh các mức RGB theo màu (tương tự như RGBColorChooser). Đảm bảo đưa getColor() vào các thành phần của bạn. Biến thành phần thành một lớp con Bảng điều khiển, không phải là một applet. Trả lời : đây là một vấn đề khá phức tạp - hãy chia nhỏ vấn đề thành các bước có thể quản lý được:
  1. Chuyển đổi một RGBChooserthành một thành phần.
  2. Thêm một thói quen mới vào thành phần - getColor().
  3. Thêm setColor()để đặt màu.
Đây là mã mẫu bạn sẽ nhận được vào cuối ngày:

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

Phần kết luận

Xin chúc mừng, bạn đã xem qua hướng dẫn mở rộng này về AWT.Color trong Java. Giờ đây, việc xử lý các giao diện sẽ dễ dàng hơn rất nhiều. Đừng quên áp dụng kiến ​​thức của bạn bằng cách giải các bài tập thực hành và câu đố CodeGym. Thực hành tạo nên sự hoàn hảo, vì vậy hãy đưa ra những bài toán mẫu để bạn có cơ hội tốt nhất!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION