解決了LWUIT中文不能顯示的問題

2021-05-22 06:57:29 字數 1015 閱讀 5843

使用label和radiobutton時,出現了奇怪的現象:英文可以顯示,中文不能顯示。剛開始以為lwuit對中文做了處理,因為資源中有乙個l10n,簡單看了裡面的結構,有語言和key,有點多國語言的感覺。

l10n的結構是:

key的數量+語言的數量+key的數量個utf名稱+語言的數量的資料塊,每個資料塊中都有乙個key-utf對。

這樣在解析時,就可以構成乙個大的hashtable,hashtable中的每一項都是乙個language---hashtable對。

在這個子hashtable中,則是key-utf對。

整個大的hashtable與l10n的名稱放在resource這個hashtable中。

搜尋了之後,沒有找到l10n與繪製string的關聯性。於是,沿著component的paintcomponent,找到了defaultlookandfeel的drawlabel、drawradiobutton、drawcheckbox、drawbutton方法,這幾個方法都是用drawcomponent實現的,而drawcomponent對文字的繪製是通過drawlabeltext。

在drawlabeltext中有一條語句:

g.drawstring(text, l.getshifttext() + x, y);

把字串、座標打出來沒有發現問題。那麼,是什麼原因呢?原來是graphics!上面這條語句的g是lwuit實現的graphics,它在drawstring時有乙個判斷:

將這個判斷去掉,就可以顯示中文了!

那麼如何修改呢?參照lwuit提供的demo中font的做法:

建立乙個systemfont,再設定到style中就ok了!

在這個過程中,試了一下bitmapfont,原來bitmapfont就是自己定義的字型檔,要使用什麼字元,要使用多大的字型,一定要在資源檔案中指定,最後做成bitmap的點陣,然後建立對應關係,就可以了。

此外,lwuit對lable這類控制項,提供了style,功能很強大。比如設定前景與背景的alpha值,預設狀況下是全透明的,所以一定要設定它。

解決Secure CRT不能顯示中文的BUG

ubuntu伺服器端設定 第一步 gedit var lib locales supported.d local 在其中新增 zh cn.utf 8 utf 8 主要是為了修改 var lib locales supported.d local檔案 第二步 sudo dpkg reconfigure...

Flask不能顯示中文解決辦法

在flask程式編寫中,發現遇到程式中出現中文就會提示錯誤。coding utf 8 也沒用。後來發現是python中的預設編碼沒有 utf 8 所以修改如下 進入安裝python目錄,進入lib目錄下,找到mimetypes.py檔案,開啟後加入如下語句後儲存 import sys default...

解決 SQL 不能正確顯示中文問題

use databasename goif notobject id employees is null drop table employees go create table employees id intprimary keyidentity 1,1 name nvarchar 50 not...