Hibern8IDE 是一款基於 Swing 的 Hibernate 映射檔編輯工具,預設字體不支援中文,導致介面顯示方塊字或亂碼。本文整理自 CSDN 社群解決方案,透過修改原始碼統一設定 UI 字體為「新細明體」(或系統支援的中文字體),徹底解決中文顯示問題。
在 net.sf.hibern8ide.Hibern8IDE 類別中加入以下方法,遍歷 UIManager 所有預設屬性,將屬於 FontUIResource 的字體替換為指定中文字體:
public static void setUIFont(javax.swing.plaf.FontUIResource f) {
java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof javax.swing.plaf.FontUIResource) {
UIManager.put(key, f);
}
}
}
在同類別的 main 方法 try 區塊開頭添加一行程式碼,於介面初始化前套用字體:
setUIFont(new javax.swing.plaf.FontUIResource("新細明體", Font.PLAIN, 12));
註:字體名稱需根據作業系統調整,Windows 可用「新細明體」、「微軟正黑體」;Linux/Mac 需換成對應中文字體名稱。
修改完成後,需重新編譯專案。編譯時可能需調整 build.xml 中的路徑設定(如 JDK、庫檔路徑),請根據本機環境自行修改。編譯成功後執行,介面中文即可正常顯示。
Swing 的外觀由 UIManager 管理預設資源。透過遍歷所有預設鍵值,針對字體資源進行統一替換,屬於「全域外觀自定義」技巧,同樣適用於其他 Swing 應用的中文化處理。
此修改屬一次性永久生效,無需每次啟動配置。若後續升級 Hibern8IDE 版本,同樣原理適用於新版本原始碼。