在 Java 中画一个六边形
本文将演示如何在 Java 编程中绘制六边形。我们将学习在屏幕上绘制形状的数组和对象。
在 Java 中使用数组绘制六边形
示例代码(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);
}
}
示例代码(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);
}
}
输出:

此代码示例有两个类,hexagon.java 和 drawHexagon.java,它们具有 main 函数。hexagon.java 扩展了 JPanel 类,因为我们覆盖了它的名为 paintComponent() 的方法。
JPanel 是 java.swing 包类之一,它就像一个存储各种组件的容器。
它的主要任务是组织不同的组件和布局。你可以在此处找到有关它的深入信息。
此外,我们使用 setPreferredSize() 方法创建了一个构造函数。它将以 width 和 height 作为参数的 Dimension 类的对象。
为什么我们使用 setPreferredSize() 而不是 setBounds() 或 setSize()?setSize() 和 setBounds() 只能在没有使用布局管理器时使用,但我们有一个默认的布局管理器。
因此,我们可以通过 setXXXXSize() 方法向布局管理器提供一些提示。例如,setPreferredSize()。
然后,我们重写了一个名为 paintComponent() 的方法,它在屏幕上制作图形。它从我们传递给 super 类的 paintComponent() 方法的 Graphics 类中获取一个对象。
我们可以使用这个对象来设置颜色、绘制形状等。
之后,我们创建两个数组,xPoints 和 yPoints,具有 x 和 y 坐标。我们将这些坐标和 nPoints 传递给 fillPolygon() 方法以在屏幕上制作一个六边形。
要找到六边形的确切点,我们可以使用图形的第一象限来获得 x 和 y 点。请参阅以下内容:

现在,让我们谈谈 drawHexagon.java 类。我们创建了一个 JFrame 类对象,它使用 add() 方法将六边形添加到框架中。
只要用户按下屏幕上的十字按钮 (X),setDefaultCloseOperation() 就会被执行。setVisible(true) 方法使窗口对用户可见。
setLocationRelativeTo(null) 方法使计算机的屏幕窗口居中。此外,pack() 会创建一个大小合适的框架,以承载其指定大小或以上的内容。
Java 中使用对象绘制六边形
示例代码(hexagon.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);
}
}
主类:
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);
}
}
输出:

除了 hexagon.java 类的 paintComponent() 中的一些更改之外,所有功能都与上一节相同。
这一次,我们创建一个 Polygon 类对象来使用 addPoint() 方法添加点。我们使用 setColor() 和 fillPolygon() 方法设置颜色并填充形状。
