Home | Clases | Interfaces de usuario con Java Swing | La clase Graphics

La clase Graphics


Introducción

Java proporciona la clase Graphics, que permite dibujar elipses, cuadrados, líneas, mostrar texto y mucho más. Esta clase proporciona el entorno de trabajo para cualquier operación gráfica que se realice dentro del AWT.

Para poder pintar, un programa necesita un contexto gráfico válido, representado por una instancia de la clase Graphics, pero esta clase no se puede instanciar directamente, sino que debemos crear un componente y pasarlo al programa como un argumento al método paint().

El único argumento del método paint() es un objeto de esta clase. La clase Graphics dispone de métodos para soportar tres categorías de operaciones gráficas:

  • Dibujo de primitivas gráficas (elipses, cuadrados, líneas, etc.)
  • Dibujo de texto
  • Presentación de imágenes en diferentes formatos

Además, la clase Graphics mantiene un contexto gráfico, entro otras, con las siguientes características:
  • un área de dibujo actual
  • un color de dibujo del Background
  • un color de dibujo del Foreground
  • un Font con todas sus propiedades, etc.


Como hemos visto en otros componentes, para dibujar hay que tener en cuenta que los ejes de coordenadas están situados en la esquina superior izquierda y que todas las medidas serán en pixels.

A continuación se muestra un programa que dibuja las primitivas gráficas principales de la clase Graphics:



import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import static java.awt.Font.PLAIN;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JPanel;

public class Ejemplo1Graphics extends JFrame {

JPanel panel;

public Ejemplo1Graphics(){

initPanel();
initPantalla();

}

private void initPanel(){

panel = new JPanel(); //Inicializo panel
add(panel); //Lo añado al JFrame
panel.setPreferredSize(new Dimension(800,600)); //Establezco dimensiones del panel

}

@Override
public void paint(Graphics g) {
super.paint(g);

//Para poder modificar más propiedades
Graphics2D g2d = (Graphics2D) g;

//Línea
g2d.setColor(Color.BLUE);
g2d.setStroke(new BasicStroke(5));
g2d.drawLine(30, 70, 770, 70);

//Rectángulo (relleno y borde)
g2d.setColor(Color.BLUE);
g2d.fillRect(30, 100, 350, 60);
g2d.setColor(Color.BLACK);
g2d.drawRect(30, 100, 350, 60);

//Rectángulo redondeado
g2d.setColor(Color.CYAN);
g2d.drawRoundRect (420, 100, 350, 60, 10, 10);

//Arco
g2d.setColor(Color.PINK);
g2d.drawArc(30, 200, 100, 100, 180, -90);

//Círculo
g2d.setColor(Color.RED);
g2d.drawOval(100, 200, 100, 100);

//Óvalo (con relleno y borde)
g2d.setColor(Color.YELLOW);
g2d.fillOval(240, 200, 150, 100);
g2d.setColor(Color.BLACK);
g2d.drawOval(240, 200, 150, 100);

//Polígono (3 lados)
int [] triangulo_x = {450, 510, 570};
int [] triangulo_y = {300, 200, 300};
g2d.setColor(Color.ORANGE);
g.drawPolygon (triangulo_x, triangulo_y, 3);

//Polígono (5 lados con relleno y borde)
int [] pentagono_x = {670, 650, 700, 750, 730};
int [] pentagono_y = {300, 245, 200, 245, 300};
g2d.setColor(Color.MAGENTA);
g2d.fillPolygon (pentagono_x, pentagono_y, 5);
g2d.setColor(Color.BLACK);
g2d.drawPolygon (pentagono_x, pentagono_y, 5);

//Texto
g2d.setColor(Color.BLACK);
g2d.setFont(new Font("ARIAL",PLAIN,32));
g2d.drawString("Esto es un texto", 30, 400);

//Imagen
Toolkit t = Toolkit.getDefaultToolkit();
Image imagen = t.getImage ("src/img/form.png");
g2d.drawImage(imagen, 30, 450, this);

//Degradado
GradientPaint gp = new GradientPaint(400, 350, Color.RED, 770, 350, Color.GREEN);
g2d.setPaint(gp);
g2d.fillRect(400, 350, 370, 200);

}

private void initPantalla(){

setTitle("Ejemplo Gráficos 1");
setSize(800,600);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);

}

public static void main( String args[] ) {

new Ejemplo1Graphics();

}

}




Ejercicios propuestos

12. Genera un programa que permita, a partir de n campos de entrada de tipo TextField, generar gráficos estadísticos por pantalla tipo tarta, líneas, barras y barra porcentual (puedes utilizar, por ejemplo, los resultados de las últimas elecciones generales).
13. Ejercicio Avanzado: Genera una clase poligono que permita dibujar un polígono a partir de los siguientes parámetros: número de lados, longitud de lado, posición x e y, color y grosor de línea, color de fondo.

Fuente parcial: Diego Moisset. tutorialesprogramacionya.com

Fecha de publicación: 18/09/2020
Asignaturas: desarrollo de interfaces
Temas: interfaces usuario usabilidad
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos