在 Java 中畫一個六邊形

Mehvish Ashiq 2023年10月12日
  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