J2ME 低級用戶界面(Canvas/GameCanvas)賦予開發者像素級繪製控制權。靈活運用 Font 字體屬性與 RGB 顏色模型,是提升遊戲/應用視覺質感的關鍵。本文系統講解字體構造、常用操作及顏色表示技巧。
受限於設備字體資源,J2ME 不支持加載自定義字體文件,所有字體屬性必須從 Font 類常量中選擇:
Font font = Font.getFont(int face, int style, int size);
| 屬性 | 常量 | 含義 |
|---|---|---|
| face (外觀) | FACE_MONOSPACE | 等寬字體,適合代碼/數字對齊 |
| FACE_PROPORTIONAL | 比例字體,字符寬度不一,閱讀更自然 | |
| FACE_SYSTEM | 系統默認字體,兼容性最好 | |
| style (樣式) | STYLE_PLAIN | 常規(默認) |
| STYLE_BOLD | 粗體 | |
| STYLE_ITALIC | 斜體 | |
| STYLE_UNDERLINED | 下劃線 | |
| STYLE_BOLD | STYLE_ITALIC | 粗斜體(位或組合) | |
| STYLE_UNDERLINED | STYLE_BOLD | 帶下劃線粗體 | |
| STYLE_UNDERLINED | STYLE_ITALIC | STYLE_BOLD | 帶下劃線粗斜體 | |
| size (大小) | SIZE_SMALL | 小號,具體像素由設備決定 |
| SIZE_MEDIUM | 中號 | |
| SIZE_LARGE | 大號 |
// 系統字體、粗體、中號
Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
// 等寬、粗斜體、大號
Font monoBoldItalicLarge = Font.getFont(
Font.FACE_MONOSPACE,
Font.STYLE_BOLD | Font.STYLE_ITALIC,
Font.SIZE_LARGE);
| 操作 | 代碼 | 場景 |
|---|---|---|
| 獲取系統默認字體 | Font.getDefaultFont() | 無特殊需求時的安全選擇 |
| 在 paint() 中獲取當前字體 | Font f = g.getFont(); | 保存狀態、臨時切換後恢復 |
| 在 paint() 中設置當前字體 | g.setFont(myFont); | 繪製特定文本前切換 |
| MIDP 2.0 List 指定行字體 | list.setFont(0, myFont); | 第 0 行應用自定義字體(索引從 0 開始) |
J2ME 無專門 Color 類,直接使用 24 位 RGB 整數 表示顏色:
0x00RRGGBB 十六進制整數(高 8 位保留為 0)(R, G, B) 形式傳遞給 API| 顏色 | 十六進制 | 十進制三元組 |
|---|---|---|
| 紅 | 0x00FF0000 | (255, 0, 0) |
| 綠 | 0x0000FF00 | (0, 255, 0) |
| 藍 | 0x000000FF | (0, 0, 255) |
| 白 | 0x00FFFFFF | (255, 255, 255) |
| 黑 | 0x00000000 | (0, 0, 0) |
| 黃 | 0x00FFFF00 | (255, 255, 0) |
| 青 | 0x0000FFFF | (0, 255, 255) |
| 洋紅 | 0x00FF00FF | (255, 0, 255) |
0x00FFFFFF 實為白色,正確藍色為 0x000000FF,此處已修正。
// 在 paint(Graphics g) 中
g.setColor(0x00FF0000); // 十六進制直接設置前景色
g.drawString("Red Text", 10, 10, Graphics.TOP | Graphics.LEFT);
g.setColor(0, 255, 0); // 三元組設置前景色
g.fillRect(10, 30, 100, 20); // 綠色填充矩形
// 自定義顏色:橙色 (255, 165, 0)
int orange = 0x00FFA500;
g.setColor(orange);
g.drawArc(10, 60, 50, 50, 0, 360);
FACE_PROPORTIONAL,捕獲異常後回退 FACE_SYSTEMpaint() 中直接復用class Colors { static final int RED = 0x00FF0000; ... } 避免魔術數字SIZE_MEDIUM 在不同手機像素高度差異大,實機測試不可少掌握 Font 三屬性組合與 RGB 顏色直觀表示,即可在 J2ME 低級界面上構建清晰、美觀的文本與圖形。記住:系統字體常量是唯一合法來源,RGB 整數是唯一顏色載體。將字體/顏色管理封裝為工具類,配合實機適配測試,是打造專業級移動應用視覺體驗的基石。