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

J2ME 字型與色彩設定完整指南:Font 工廠模式與 RGB/十六進制雙模色彩

     編輯:J2ME

Font 字型設定:工廠模式與三維屬性

為何無構造函數?

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);

Canvas 中使用


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);
}

高階 UI (MIDP 2.0+) List 逐行字型


list.setFont(0, font);  // 第 0 行套用 font
list.setFont(1, Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL));

Color 色彩設定:雙模式表達

J2ME 無 Color 類,色彩直接由 Graphics 方法以整數表達:

模式一:十六進制 0xRRGGBB


g.setColor(0xFFFFFF);  // 白
g.setColor(0x00FF00);  // 綠
g.setColor(0xFF0000);  // 紅

模式二:RGB 三分量 (0-255)


g.setColor(255, 255, 255);  // 白
g.setColor(0, 255, 0);      // 綠
g.setColor(255, 0, 0);      // 紅

完整 paint 範例


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 字型渲染無抗鋸齒,大字體鋸齒明顯,必要時預渲染為 Image

結語

J2ME 字型以「工廠模式 + 三屬性組合」適配受限字型資源;色彩以「十六進制 / RGB 雙模式」直接作用於 Graphics。掌握字型快取、色彩常數化、裝置差異測試等工程化實踐,能在碎片化功能機上呈現穩定、美觀的視覺效果。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved