javax.microedition.lcdui.Font 採用工廠模式,無 public 構造函數。裝置字型資源有限且不可擴展,必須透過 Font.getFont(face, style, size) 從系統字型表獲取實例。
| 屬性 | 常數 | 說明 |
|---|---|---|
| Face (外觀) | FACE_SYSTEM | 系統預設字型 |
FACE_MONOSPACE | 等寬字型(程式碼、對齊顯示) | |
FACE_PROPORTIONAL | 比例字型(一般文字閱讀) | |
| Style (風格) | STYLE_PLAIN | 正常 |
STYLE_BOLD | 粗體 | |
STYLE_ITALIC | 斜體 | |
STYLE_UNDERLINED | 底線 | |
| Size (大小) | SIZE_SMALL | 小 |
SIZE_MEDIUM | 中 | |
SIZE_LARGE | 大 |
// 粗體 + 斜體 + 中號 + 系統字型
Font f = Font.getFont(Font.FACE_SYSTEM,
Font.STYLE_BOLD | Font.STYLE_ITALIC,
Font.SIZE_MEDIUM);
Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL);
public void paint(Graphics g) {
String str = "Welcome the Java World!";
g.setFont(font);
g.drawString(str, getWidth()/2, MENU_Y, Graphics.TOP | Graphics.HCENTER);
}
list.setFont(0, font); // 第 0 行套用 font
list.setFont(1, Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL));
J2ME 無 Color 類,色彩直接由 Graphics 方法以整數表達:
g.setColor(0xFFFFFF); // 白
g.setColor(0x00FF00); // 綠
g.setColor(0xFF0000); // 紅
g.setColor(255, 255, 255); // 白
g.setColor(0, 255, 0); // 綠
g.setColor(255, 0, 0); // 紅
public void paint(Graphics g) {
// 十六進制
g.setColor(0x0000FF); // 藍背景
g.fillRect(0, 0, getWidth(), getHeight());
// RGB
g.setColor(255, 255, 0); // 黃字
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));
g.drawString("J2ME Color Demo", getWidth()/2, getHeight()/2, Graphics.HCENTER | Graphics.TOP);
}
getFont 可能較耗時,啟動時建立常用 Font 實例快取為 static final 欄位static final int COLOR_BG = 0x000033; 等,統一風格、易維護J2ME 字型以「工廠模式 + 三屬性組合」適配受限字型資源;色彩以「十六進制 / RGB 雙模式」直接作用於 Graphics。掌握字型快取、色彩常數化、裝置差異測試等工程化實踐,能在碎片化功能機上呈現穩定、美觀的視覺效果。