在 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.Dimension;
import java.awt.Color;
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()
方法设置颜色并填充形状。