Dibujar un hexágono en Java

Mehvish Ashiq 12 octubre 2023
  1. Use arrays para dibujar hexágonos en Java
  2. Usar objeto para dibujar hexágono en Java
Dibujar un hexágono en Java

Este artículo demostrará cómo dibujar un hexágono en programación Java. Aprenderemos sobre arrays y objetos para dibujar formas en la pantalla.

Use arrays para dibujar hexágonos en Java

Código de ejemplo (hexagon.java):

import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;

public class hexagon extends JPanel {
  public hexagon() {
    setPreferredSize(new Dimension(500, 500));
  }

  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    int[] xPoints = {200, 300, 350, 300, 200, 150};
    int[] yPoints = {350, 350, 250, 150, 150, 250};
    g.fillPolygon(xPoints, yPoints, xPoints.length);
  }
}

Código de ejemplo (drawHexagon.java):

import javax.swing.JFrame;

public class drawHexagon {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Draw Hexagon");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(new hexagon());
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}

Producción:

Hexágono dibujado usando arrays en Java

Este ejemplo de código tiene las dos clases, hexagon.java y drawHexagon.java, que tiene la función main. El hexagon.java extiende la clase JPanel porque anulamos su método llamado paintComponent().

JPanel, una de las clases del paquete java.swing, es como un contenedor que almacena varios componentes.

Su tarea principal es organizar diferentes componentes y diseños. Puede encontrar información detallada al respecto aquí.

Además, creamos un constructor con el método setPreferredSize(). Toma el objeto de la clase Dimension con width y height como argumentos.

¿Por qué usamos setPreferredSize() en lugar de setBounds() o setSize()? El setSize() y setBounds() se pueden usar solo cuando no se está usando un administrador de diseño, pero tenemos un administrador de diseño predeterminado.

Por lo tanto, podemos proporcionar algunas sugerencias a un administrador de diseño a través del método setXXXXSize(). Por ejemplo, setPreferredSize().

Luego, anulamos un método llamado paintComponent(), que crea gráficos en la pantalla. Toma un objeto de la clase Graphics que le pasamos al método paintComponent() de la clase super.

Podemos usar este objeto para establecer el color, dibujar la forma, etc.

Después de eso, creamos dos arrays, xPoints y yPoints, que tienen coordenadas x e y. Pasamos estas coordenadas y nPoints al método fillPolygon() para hacer un hexágono en la pantalla.

Para encontrar los puntos exactos de un hexágono, podemos usar el primer cuadrante de la gráfica para obtener los puntos x e y. Ver lo siguiente:

Dibuja un hexágono en Java usando arrays

Ahora, hablemos de la clase drawHexagon.java. Creamos un objeto de clase JFrame, que agrega el hexágono al marco utilizando el método add().

El setDefaultCloseOperation() se ejecuta tan pronto como un usuario presiona el botón de cruz (X) en la pantalla. El método setVisible(true) hace que la ventana sea visible para el usuario.

El método setLocationRelativeTo(null) centra la ventana de la pantalla del ordenador. Además, pack() crea un marco con el tamaño adecuado para transportar los contenidos en o por encima de sus tamaños especificados.

Usar objeto para dibujar hexágono en Java

Código de ejemplo (hexágono.java):

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Polygon;
import javax.swing.JPanel;

public class hexagon extends JPanel {
  public hexagon() {
    setPreferredSize(new Dimension(250, 250));
  }

  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Polygon p = new Polygon();

    for (int i = 0; i < 6; i++)
      p.addPoint((int) (100 + 50 * Math.cos(i * 2 * Math.PI / 6)),
          (int) (100 + 50 * Math.sin(i * 2 * Math.PI / 6)));

    g.setColor(Color.RED);
    g.fillPolygon(p);
  }
}

Clase principal:

import javax.swing.JFrame;

public class drawHexagon {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Draw Hexagon");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(new hexagon());
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}

Producción:

Hexágono dibujado usando objeto en Java

Toda la funcionalidad es igual a la sección anterior excepto por algunos cambios en paintComponent() de la clase hexagon.java.

Esta vez, creamos un objeto de clase Polygon para usar el método addPoint() para agregar puntos. Establecemos el color y rellenamos la forma usando los métodos setColor() y fillPolygon().

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook