核心 API
java.awt.Graphics.drawString(String str, int x, int y):在座標 (x, y) 繪製字串 str (基準線左下角)。
最簡範例:ghq.java
import java.awt.*;
import java.applet.*;
public class ghq extends Applet {
String text = "ghq is a student!";
public void paint(Graphics g) {
g.drawString(text, 20, 20); // 座標 (20, 20) 顯示文字
}
}
中文/Unicode 支援
- Java 內部使用 UTF-16 (每字元 16 bits / 2 bytes),完整支援 Unicode
- 將字串改為
"你好!歡迎參觀!" 即可正常顯示中文
- 若瀏覽器顯示亂碼,通常是瀏覽器 Bug (如 IE 4.0) 或字體缺失,建議使用 IE 5.0+ / Netscape / 現代瀏覽器
與 C 語言字元模型差異
| 特性 | Java (char / String) | C (char / char*) |
| 位元寬度 | 16 bits (UTF-16 代碼單元) | 8 bits (通常 ASCII/擴展) |
| 中文支援 | 原生支援 | 需多位元組字元集 (MBCS) / Unicode 庫 |
| 字串結構 | 不可變物件 | 以 \0 結尾的位元組陣列 |
進階繪圖技巧
// 設定字體
g.setFont(new Font("SansSerif", Font.BOLD, 16));
// 設定顏色
g.setColor(Color.BLUE);
// 取得字串寬高 (置中/對齊用)
FontMetrics fm = g.getFontMetrics();
int strWidth = fm.stringWidth(text);
int strHeight = fm.getHeight();
int x = (getWidth() - strWidth) / 2;
int y = (getHeight() + fm.getAscent()) / 2;
g.drawString(text, x, y);
// 繪製多行文字
String[] lines = text.split("\n");
for (int i = 0; i < lines.length; i++) {
g.drawString(lines[i], x, y + i * fm.getHeight());
}
現代環境提示
Applet 已淘汰。現代 Java 圖形繪製請使用:
- JavaFX:
Text 節點、Canvas + GraphicsContext
- Swing:
JComponent.paintComponent(Graphics) 覆寫
- AWT:
Canvas.paint(Graphics) (較舊)
- 上一篇文章: Java Applet 基礎知識完整指南:生命週期、參數傳遞與部署詳解
- 下一篇文章: Java Applet 事件處理入門:滑鼠與鍵盤響應基礎範例
Copyright ©
程式碼之家 All Rights Reserved