CodeGym /Blog Java /Random-ES /Clase Java.Awt.Color
Autor
Pavlo Plynko
Java Developer at CodeGym

Clase Java.Awt.Color

Publicado en el grupo Random-ES
Si domina Java Abstract Toolkit, tendrá que aprender las aplicaciones de Java AWT Color Class. Dado que hay muchos constructores y métodos involucrados, puede parecer intimidante al principio. Pero no se preocupe, lo cubrimos :) Con este resumen completo de Java AWT Color, aprenderá cómo crear un nuevo tipo de color y administrarlo en muy poco tiempo. También ofreceremos un par de pruebas de práctica que lo ayudarán a perfeccionar su habilidad.

¿Qué es la clase de color AWT en Java?

El propósito principal de AWT Color es permitir a los desarrolladores crear nuevos colores usando código Java usando paquetes RGB (rojo, verde, azul), RGBA (rojo, verde, azul, alfa) o HSB (tono, saturación, componentes BRI). La clase contiene dos valores: el código de la sombra y el valor de opacidad/transparencia. Clase Java.Awt.Color - 1Así es como declara Class java.awt.Color:

public class Color
   extends Object
      implements Paint, Serializable
Para declarar diferentes tipos de colores usando Class.java.awt.Color, los desarrolladores usan constructores; los veremos ahora.

Constructores AWT.Color en Java

Según el parámetro del color que desee crear, deberá usar un tipo específico de constructor de color. Hay un puñado de estos, examinémoslos uno por uno.
  • Color(float r, float g, float b)es la clase que usa para definir un color en el esquema de color RGB que es opaco. Puede especificar la gama de colores entre 0,0 y 0,1.
  • Color(float r, float b, float g, float a)es la clase que define un color RGBA (el rango de valores disponibles es 0.0 y 0.1).
  • Color(ColorSpace c, float[], co, float a)define un color en el ColorSpace que especifique de antemano. Un desarrollador especifica el rango de componentes de color en la matriz flotante de un alfa definido.
  • Color(int, rgb)es una clase que crea un color RGB (opaco). Asegúrese de prestar atención al valor del componente del constructor: 16-23 para rojo, 8-15 para verde, 0-7 para azul.
  • Color(int r, int g, int b)- un método utilizado para definir un color RGB opaco. El valor del color debe estar entre 0 y 255.
  • Color(int r, int g, int b, int a)- crea un color en el esquema RGBA (0-255).
  • Color(int rgba, boolean b)se utiliza para crear colores sRGB dentro de un valor combinado definido. El rango de valores abarca 24-31 para alfa, 16-23 para rojo, 8-15 para verde y 0-7 para azul.
Aparte de eso, class.awt.color opera con los campos heredados de Java.awt.Transparency:
  • TRANSLUCENTrepresenta si el color contiene o no valores alfa y tiene dos valores: 0 y 1.
  • OPAQUEasigna el valor alfa de 1 al objeto garantizando su completa opacidad.
  • BITMASKrepresenta el valor absoluto de opacidad o transparencia y se encuentra dentro del rango de (0;1) donde 0 es transparencia total y 1 es opacidad extrema.

Los 15 métodos principales para usar con la clase de color Java AWT

Para manipular un color, ajustar su oscuridad o brillo, los desarrolladores de Java se basan en diferentes métodos. Hay docenas de ellos para que no tengas que aprenderlos todos de memoria. Sin embargo, cuando se trata de los métodos Java AWT Color más utilizados, redujimos la lista a quince. Recordarlos sin tener que hacer referencia a la documentación de la API de Java sería útil para los desarrolladores.

más oscuro()

El método se usa para crear un nuevo color que es una versión más oscura del color que ya ha definido. Ejemplo :

Color.green.darker()
Si aplicar darker()una vez no es suficiente para crear el tono que necesita, no dude en volver a aplicar el método tantas veces como desee, como se muestra a continuación:

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

más brillante()

Como su nombre indica, Color brighter()se utiliza para iluminar el tono que ya tienes. De manera similar a darker(), podría usarse varias veces por un solo color. Ejemplo :

Color myColor = Color.RED;          

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

int getAlfa()

Si desea devolver el componente alfa de su color, use este método. Tenga en cuenta que los valores alfa se encuentran dentro del rango de 0-255. Aquí está el ejemplo de la aplicación y devolución del método. Ejemplo :

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

Color estático getColor(Cadena nm)

Los desarrolladores de Java pueden usar este método para ubicar un color usando las propiedades del sistema. Hay otros métodos que manejan objetivos similares:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

Decodificación de color estática (cadena nm)

Este método se utiliza para mostrar un color como una cadena. Una vez completada la conversión, un desarrollador obtendrá un color opaco definido. Ejemplo :

public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

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

Este método parece complejo pero es más fácil de manipular de lo que parece. Paint Context CreateContext()se utiliza para definir un patrón de color sólido repetido. Ejemplo :

 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)

Este es un método Java que puede aplicar a un color para devolver su matriz flotante y sus componentes alfa. El método se aplica a un dado ColorSpacedefinido por cspace. Ejemplo :

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

return myColor.getComponents(cspace, compArray);

}

Espacio de color obtener Espacio de color ()

Los desarrolladores de Java pueden usar este método para devolver el espacio de color para un color elegido. Otra forma de obtener un espacio de color para una entrada dada es aplicando Arrays.to.String. Esta es una estrategia más compleja, como se ve en el siguiente ejemplo: Ejemplos :

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

Los desarrolladores de Java aplican este método para crear un nuevo objeto de color basado en los valores del modelo HSB. Ejemplo :

 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.

obtenerverde()

Este método Java devuelve el valor del componente verde para el color que creó. Todos los valores se ajustan al rango que corresponde al verde en el esquema de color RGB. Ejemplo :

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

Ponerse rojo()

De forma similar a getGreen(), getReddevuelve el valor del componente rojo de un color determinado. Ya has visto cómo se aplicó el método en el ejemplo anterior.

obtenerAzul()

Este método devuelve el valor de azul dentro del rango de valores del esquema de color RGB. Del mismo modo, para ver el ejemplo del uso de getBlue(), consulte la descripción de getGreen().

obtenerAlfa()

El método getAlpha() se usa en Java cuando un desarrollador quiere encontrar el valor alfa de un color determinado. De manera similar a RBG, los alfas de todos los colores se encuentran dentro del rango 0-255. Ejemplo : así es como getAlpha()se usó como parte de un ciclo.

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

obtenerTransparencia()

Este método devuelve el valor de transparencia que usted u otro desarrollador hayan especificado para el color al crearlo. Ejemplo :

public int getTransparency() {

return myColor.getTransparency();

booleano es igual a (Objeto obj)

Este método es muy útil si está comparando dos colores entre sí. Permite a los desarrolladores de Java saber si dos objetos de color tienen valores iguales. Ejemplo :

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

es igual a (Objeto obj)

De manera similar a boolean equals(Object obj), este es un método comparativo. Lo usamos para determinar si los objetos de color son iguales entre sí. Ejemplo :

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

Guía de los colores principales utilizados en Java

Ahora que comprende los métodos utilizados para manipular colores en Java, echemos un vistazo a los tipos de campo con los que trabajará. Estos son los colores estáticos reales que los desarrolladores de Java pueden definir. Puede definir un color ingresando su nombre (asegúrese de ingresarlo exactamente como está escrito en la documentación oficial) o especificando su valor RGB. Echemos un vistazo a la paleta que usan los desarrolladores:
Nombre del campo Descripción
color estático negro (NEGRO) Define el color negro
color blanco estático (BLANCO) Define el color blanco
color azul estático (AZUL) Se usa para definir el azul
color gris estático (GRAY) Define el color gris
color estático gris oscuro (DARK_GRAY) Define un tono más oscuro de gris.
color estático gris claro (LIGHT_GRAY) Define un tono más claro de gris.
color verde estático (VERDE) Se utiliza para definir el color verde.
Color estático magenta (MAGENTA) Define el tono magenta
Color estático rosa (PINK) Define rosa en Java
Color naranja estático (NARANJA) Crea el color naranja en Java
estático Color amarillo (AMARILLO) Se usa para definir el amarillo.
estático Color rojo (RED) Define el color rojo en Java

Problemas de práctica para usar AWT.Color en Java

¿Sientes que tienes una base sólida de AWT Color en Java? Probemos estas habilidades resolviendo algunos problemas prácticos: aquí, deberá aplicar constructores y métodos comunes, así como otras herramientas Java no relacionadas con el color. Problema de práctica #1 . Cree un componente personalizado que permita al usuario del programa ajustar los niveles RGB en un color (similar a RGBColorChooser). Asegúrese de incluir getColor() en sus componentes. Convierta el componente en una subclase de Panel, no en un subprograma. Respuesta : este es un problema bastante complejo; dividámoslo en pasos manejables:
  1. Convierte un RGBChooseren un componente.
  2. Agregue una nueva rutina al componente - getColor().
  3. Añadir setColor()para establecer el color.
Aquí está el código de muestra que debe obtener al final del día:

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

Conclusión

Felicidades, has leído esta extensa guía sobre AWT.Color en Java. Ahora, el manejo de las interfaces será mucho más fácil. No olvides aplicar tus conocimientos resolviendo problemas de práctica y cuestionarios de CodeGym. ¡La práctica hace la perfección, así que dé su mejor oportunidad a los problemas de muestra!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION