在 Java 中畫一個三角形

Rupam Yadav 2024年2月15日
  1. 在 Java 中使用 java.awtjavax.swingPath2D 畫一個三角形
  2. 在 Java 中使用 java.awtjavax.swingdrawPolygon 畫一個三角形
  3. 在 Java 中使用 drawLine() 繪製一個三角形
在 Java 中畫一個三角形

在本文中,我們將學習如何在 Java 中繪製一個三角形。我們使用 AWT(Abstract Window Component Toolkit),這是最早的 Java 開發包,用於圖形程式設計應用。Swing 是在 AWT 的基礎上新開發的 Java 的 GUI 小控制元件套件,功能較多。

在 Java 中使用 java.awtjavax.swingPath2D 畫一個三角形

我們在 main 類中使用 JFrame 來建立主視窗,在主視窗中新增按鈕、文字欄位等元件來建立 GUI(圖形使用者介面)。Draw_A_Triangle 類擴充套件了 JPanel,它是一個輕量級的容器,用來組織 GUI 元件。JPanel 使用 frame.add() 方法新增到 JFrames 上。

Triangle_Shape 類擴充套件了 Path2D 類,它提供了一個簡單而靈活的形狀,表示一個任意的幾何路徑。我們使用 moveTo() 方法放置第一個點,使用 LineTo() 方法放置其他點。close() 方法確保三角形正確關閉。

paintComponent() 方法在建立面板或使用者在使用者介面上做一些需要重新繪製的事情時自動呼叫。Graphics2D 提供了更多的顏色管理、幾何圖形和文字佈局的控制。最後,我們使用 g2d 並呼叫 draw 來繪製一個三角形。

import java.awt.*;
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
import javax.swing.*;

public class Draw_A_Triangle extends JPanel {
  public void paintComponent(Graphics g) {
    Triangle_Shape triangleShape = new Triangle_Shape(
        new Point2D.Double(50, 0), new Point2D.Double(100, 100), new Point2D.Double(0, 100));
    Graphics2D g2d = (Graphics2D) g.create();
    g2d.draw(triangleShape);
  }
  public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("Draw Triangle");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBackground(Color.white);
    frame.setSize(200, 200);

    Draw_A_Triangle panel = new Draw_A_Triangle();
    frame.add(panel);
    frame.setVisible(true);
  }
}
class Triangle_Shape extends Path2D.Double {
  public Triangle_Shape(Point2D... points) {
    moveTo(points[0].getX(), points[0].getY());
    lineTo(points[1].getX(), points[1].getY());
    lineTo(points[2].getX(), points[2].getY());
    closePath();
  }
}

輸出:

用 Java 畫一個三角形 - moveTo

在 Java 中使用 java.awtjavax.swingdrawPolygon 畫一個三角形

我們使用 JFrame 建立一個頂層容器,然後在其中新增一個面板,也就是我們的 DrawATriangle 類,它是 JPanel 的擴充套件。

如下面的程式碼所示,我們呼叫 paintComponent 裡面的 drawPolygon 方法,在 Graphics 物件 g 上建立一個三角形。

drawPolygon(int x[], int y[], int numOfPoints) 方法按照 x[]y[] 陣列中指定的座標繪製一個輪廓多邊形。numOfPoints 給出了點的數量,在三角形的情況下是 3。

import java.awt.*;
import javax.swing.*;

public class DrawATriangle extends JPanel {
  public void paintComponent(Graphics g) {
    int[] x = {50, 100, 0};
    int[] y = {0, 100, 100};
    g.drawPolygon(x, y, 3);
  }

  public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("Draw a Polygon");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBackground(Color.white);
    frame.setSize(300, 200);

    DrawATriangle panel = new DrawATriangle();
    frame.add(panel);
    frame.setVisible(true);
  }
}

輸出:

用 Java 畫一個三角形 - drawPolygon

在 Java 中使用 drawLine() 繪製一個三角形

DrawTriangle 類中,我們擴充套件 JComponent 來使用 Swing 元件,如 paintCompnent()JFrame。我們用 Graphics 引數 g 覆蓋 paintComponent(Graphics g),可以用來呼叫幾個繪製函式。

我們呼叫 drawLine() 方法來畫一條線。由於我們要建立一個三條線的三角形,我們需要呼叫 drawLine() 三次。drawLine() 需要四個引數,即線的第一點和第二點的 x 和 y 座標。

呼叫 getPreferredSize() 方法,返回型別為 Dimension,指定視窗的尺寸。最後,為了顯示三角形,我們在 main 方法中建立一個 JFrame 物件,並將 DrawTriangle 類的物件新增到其中。注意,我們必須呼叫 jFrame.setVisible(true),因為框架最初是不可見的。

import java.awt.*;
import javax.swing.*;

public class DrawTriangle extends JComponent {
  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);

    g.drawLine(120, 130, 280, 130);
    g.drawLine(120, 130, 200, 65);
    g.drawLine(200, 65, 280, 130);
  }

  public Dimension getPreferredSize() {
    return new Dimension(500, 300);
  }

  public static void main(String[] args) {
    JFrame jFrame = new JFrame();
    jFrame.add(new DrawTriangle());
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.pack();
    jFrame.setVisible(true);
  }
}

輸出:

在 Java 中畫一個三角形 - drawline

作者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相關文章 - Java GUI