HOWTO · Java

在 Java 中画一个六边形

本文演示了如何在 Java 编程中绘制六边形。它还教我们如何使用数组和对象在 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);
  }
}

输出:

在 Java 中使用数组绘制六边形

此代码示例有两个类,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 点。请参阅以下内容:

使用数组在 Java 中绘制六边形

现在,让我们谈谈 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);
  }
}

输出:

使用 Java 中的对象绘制六边形

除了 hexagon.java 类的 paintComponent() 中的一些更改之外,所有功能都与上一节相同。

这一次,我们创建一个 Polygon 类对象来使用 addPoint() 方法添加点。我们使用 setColor() 和 fillPolygon() 方法设置颜色并填充形状。