在 Java 中画一个六边形

Mehvish Ashiq 2024年2月15日
  1. 在 Java 中使用数组绘制六边形
  2. 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.javadrawHexagon.java,它们具有 main 函数。hexagon.java 扩展了 JPanel 类,因为我们覆盖了它的名为 paintComponent() 的方法。

JPaneljava.swing 包类之一,它就像一个存储各种组件的容器。

它的主要任务是组织不同的组件和布局。你可以在此处找到有关它的深入信息。

此外,我们使用 setPreferredSize() 方法创建了一个构造函数。它将以 widthheight 作为参数的 Dimension 类的对象。

为什么我们使用 setPreferredSize() 而不是 setBounds()setSize()setSize()setBounds() 只能在没有使用布局管理器时使用,但我们有一个默认的布局管理器。

因此,我们可以通过 setXXXXSize() 方法向布局管理器提供一些提示。例如,setPreferredSize()

然后,我们重写了一个名为 paintComponent() 的方法,它在屏幕上制作图形。它从我们传递给 super 类的 paintComponent() 方法的 Graphics 类中获取一个对象。

我们可以使用这个对象来设置颜色、绘制形状等。

之后,我们创建两个数组,xPointsyPoints,具有 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() 方法设置颜色并填充形状。

作者: Mehvish Ashiq
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

相关文章 - Java Graph