在 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()
方法設定顏色並填充形狀。