4.5 COLORES EN EL FRAME

 

En los posts anteriores vimos como dibujar figuras geométricas, ahora vamos a ver como rellenarlas con colores, para ello vamos a utilizar las siguientes clases y métodos:



El método setPaint establece como parámetro un color, color tiene cuatro clases abstractas blueredgreen y yellow. Para pintar el color de fondo y el de delante se utiliza dos métodos que heredan de JPanel, para verlo con más claridad, como siempre, es a través de la práctica, nos creamos una nueva clase cuyo código completo es el siguiente:

package swing;

 

import java.awt.*;

import java.awt.geom.Ellipse2D;

import java.awt.geom.Line2D;

import java.awt.geom.Rectangle2D;

 

import javax.swing.*;

 

public class TrabajandoColor {

 

       public static void main(String[] args) {

           

             MarcoConColor mimarco=new MarcoConColor();

           

             mimarco.setVisible(true);

           

             mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

       }

 

}

 

class MarcoConColor extends JFrame{

     

       public MarcoConColor() {

           

             setTitle("Prueba con colores");

           

             setSize(400, 400);

           

             LaminaConColor milamina =new LaminaConColor();

           

             add(milamina);

       }

}

 

class LaminaConColor extends JPanel{

     

       public void paintComponent(Graphics g) {

           

             super.paintComponent(g);

           

             Graphics2D g2=(Graphics2D) g;

           

             Rectangle2D rectangulo=new Rectangle2D.Double(100, 100, 200, 150);

           

             g2.draw(rectangulo);

           

             Ellipse2D elipse = new Ellipse2D.Double();

           

             elipse.setFrame(rectangulo);

           

             g2.draw(elipse);

           

           

       }

     

     

}

Es un código que ya hemos visto en los últimos apartados. Si probamos:



Lo que vamos a rellenar de color es la elipse, el rectángulo y el fondo.

Utilizamos la instancia de Graphics2D para el método setPaint y le vamos a pasar un parámetro que va ser el color:

public void paintComponent(Graphics g) {

           

             super.paintComponent(g);

           

             Graphics2D g2=(Graphics2D) g;

           

             Rectangle2D rectangulo=new Rectangle2D.Double(100, 100, 200, 150);

            

             g2.setPaint(Color.RED);

           

             g2.draw(rectangulo);

           

             Ellipse2D elipse = new Ellipse2D.Double();

           

             elipse.setFrame(rectangulo);

           

             g2.draw(elipse);

           

           

       }

Probamos:



Lo que nos ha pintado ha sido el trazo, lo que queremos es que nos lo rellene. Así que en lugar de utilizar el método draw que nos dibuja tenemos que sustituirlo por el método fill:

public void paintComponent(Graphics g) {

           

             super.paintComponent(g);

           

             Graphics2D g2=(Graphics2D) g;

           

             Rectangle2D rectangulo=new Rectangle2D.Double(100, 100, 200, 150);

            

             g2.setPaint(Color.RED);

           

             g2.fill(rectangulo);

           

             Ellipse2D elipse = new Ellipse2D.Double();

           

             elipse.setFrame(rectangulo);

           

             g2.draw(elipse);

           

           

       }

Probamos:



Ahora vamos a hacer lo mismo con la elipse:

public void paintComponent(Graphics g) {

           

             super.paintComponent(g);

           

             Graphics2D g2=(Graphics2D) g;

           

             Rectangle2D rectangulo=new Rectangle2D.Double(100, 100, 200, 150);

            

             g2.setPaint(Color.RED);

           

             g2.fill(rectangulo);

           

             Ellipse2D elipse = new Ellipse2D.Double();

           

             elipse.setFrame(rectangulo);

           

             g2.setPaint(Color.BLUE);

            

             g2.fill(elipse);  

           

       }

Probamos de nuevo:



Si queremos utilizar los colores más personalizados podemos utilizar el sistema RGB de la siguiente forma:

public void paintComponent(Graphics g) {

           

             super.paintComponent(g);

           

             Graphics2D g2=(Graphics2D) g;

           

             Rectangle2D rectangulo=new Rectangle2D.Double(100, 100, 200, 150);

            

             g2.setPaint(Color.RED);

           

             g2.fill(rectangulo);

           

             Ellipse2D elipse = new Ellipse2D.Double();

           

             elipse.setFrame(rectangulo);

           

             g2.setPaint(new Color(0, 160, 255));

            

             g2.fill(elipse);  

           

       }

Ejecutamos:



Hay otros dos métodos brighter() y darker() para dar más brillo o más oscuridad al color, se utiliza de la siguiente forma, para los dos métodos es lo mismo:

g2.setPaint(new Color(0, 160, 255).brighter().brighter());

Se puede utilizar varias veces, si vemos el resultado:



Otra forma de crear el color es creando una instancia de la clase Color            

public void paintComponent(Graphics g) {

           

             super.paintComponent(g);

           

             Graphics2D g2=(Graphics2D) g;

           

             Rectangle2D rectangulo=new Rectangle2D.Double(100, 100, 200, 150);

            

             g2.setPaint(Color.RED);

           

             g2.fill(rectangulo);

           

             Ellipse2D elipse = new Ellipse2D.Double();

           

             elipse.setFrame(rectangulo);

           

             Color micolor = new Color(20, 130, 155);

            

             g2.setPaint(micolor);

 

             g2.fill(elipse);  

           

       }

Para el color del fondo de la lámina vamos a la clase MarcoConColor y en el constructor escribimos la siguiente instrucción:

milamina.setBackground(Color.PINK);

Si probamos:



Podemos establecer el fondo de forma predeterminada cogiendo el color del sistema:

milamina.setBackground(SystemColor.window);

Probamos de nuevo:




4.4.4 Ellipsed2D << >> 4.6 TRABAJANDO CON FUENTES



No hay comentarios:

Publicar un comentario