J2ME javax.microedition.lcdui.Font 無公共構造函數,必須透過靜態工廠方法 Font.getFont(int face, int style, int size) 取得實例。
| 參數 | 常量 | 說明 |
|---|---|---|
| face 字體外觀 |
Font.FACE_SYSTEM |
系統預設字體(最保險) |
Font.FACE_MONOSPACE |
等寬字體,適合代碼/表格 | |
Font.FACE_PROPORTIONAL |
比例字體,視覺更自然 | |
| style 字體風格 |
Font.STYLE_PLAIN |
常規 |
Font.STYLE_BOLD |
粗體 | |
Font.STYLE_ITALIC |
斜體 | |
Font.STYLE_UNDERLINED |
底線(可與前三者 | 組合) |
|
| size 字體大小 |
Font.SIZE_SMALL |
小號 |
Font.SIZE_MEDIUM |
中號(預設) | |
Font.SIZE_LARGE |
大號 |
// 粗體 + 斜體 + 系統字體 + 小號
Font font = Font.getFont(
Font.FACE_SYSTEM,
Font.STYLE_BOLD | Font.STYLE_ITALIC,
Font.SIZE_SMALL
);
// 初始化(建議在構造器或 init() 中一次性完成)
Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL);
// Canvas.paint() 中使用
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 list = new List("Menu", List.IMPLICIT);
list.append("Item 1", null);
list.append("Item 2", null);
Font f = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_ITALIC, Font.SIZE_MEDIUM);
list.setFont(0, f); // 僅第 0 行套用斜體
J2ME 沒有 Color 類,顏色直接以 32 位整數 表示,兩種等價寫法:
| 方式 | 語法 | 範例(白色) | 備註 |
|---|---|---|---|
| 十六進制 | g.setColor(0xRRGGBB) |
g.setColor(0xFFFFFF) |
最高位 0x00 忽略,直接寫 0xRRGGBB |
| RGB 分量 | g.setColor(r, g, b) |
g.setColor(255, 255, 255) |
各分量 0~255 |
int BLACK = 0x000000;
int WHITE = 0xFFFFFF;
int RED = 0xFF0000;
int GREEN = 0x00FF00;
int BLUE = 0x0000FF;
int GRAY = 0x808080;
int LIGHT_GRAY = 0xCCCCCC;
int DARK_GRAY = 0x444444;
public void paint(Graphics g) {
// 方式一:十六進制
g.setColor(0xFF0000); // 紅色
g.fillRect(10, 10, 50, 30);
// 方式二:RGB
g.setColor(0, 255, 0); // 綠色
g.drawString("Hello", 10, 50, Graphics.TOP | Graphics.LEFT);
}
paint() 中重複 getFont()。FACE_PROPORTIONAL 或 STYLE_UNDERLINED,發布前需真機測試回退策略。