首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java AWT 入門實戰:繪製滿天星動畫(含完整原始碼)

     編輯:Java 綜合教學

效果預覽

黑色背景上隨機閃爍 300 顆白色星號,模擬星空效果。

完整可執行程式碼

import java.awt.*;
import java.util.Random;

public class StarField {
    public static void main(String[] args) {
        Frame frame = new Frame("Star Field");
        frame.setSize(1024, 768);
        frame.setBackground(Color.BLACK);
        frame.add(new StarPanel());
        frame.setVisible(true);
    }
}

class StarPanel extends Panel implements Runnable {
    private static final int STAR_COUNT = 300;
    private static final int WIDTH = 1024;
    private static final int HEIGHT = 768;
    private final Random random = new Random();
    private int[] x = new int[STAR_COUNT];
    private int[] y = new int[STAR_COUNT];

    public StarPanel() {
        for (int i = 0; i < STAR_COUNT; i++) {
            x[i] = random.nextInt(WIDTH);
            y[i] = random.nextInt(HEIGHT);
        }
        new Thread(this).start();
    }

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.WHITE);
        for (int i = 0; i < STAR_COUNT; i++) {
            g.drawString("*", x[i], y[i]);
        }
    }

    @Override
    public void run() {
        while (true) {
            // 簡單閃爍:隨機重置部分星星位置
            for (int i = 0; i < 10; i++) {
                int idx = random.nextInt(STAR_COUNT);
                x[idx] = random.nextInt(WIDTH);
                y[idx] = random.nextInt(HEIGHT);
            }
            repaint();
            try { Thread.sleep(200); } catch (InterruptedException ignored) {}
        }
    }
}

關鍵知識點

  • Frame / Panel:AWT 頂層視窗與繪圖容器
  • Graphics:繪圖上下文,drawString、fillOval 等
  • repaint():排程重繪,觸發 paint()
  • Runnable + Thread:動畫迴圈與事件派發執行緒分離
  • Math.random() / Random:產生隨機座標

進階擴充建議

  1. 星星大小/顏色隨機化
  2. 添加視差滾動效果(遠星慢、近星快)
  3. 雙緩衝(BufferedImage)消除閃爍
  4. 改用 Swing JPanel + Timer 獲得更平滑動畫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved