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