程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 如何在J2ME的低級界面中輕松實現各種文字的自然分行顯示

如何在J2ME的低級界面中輕松實現各種文字的自然分行顯示

編輯:關於JSP

做游戲的時候,特別是在一些對話比較多的情況下,如RPG游戲,常常遇到文字的斷行顯示問題
如何做到不管如何變化文字,都能夠比較好地顯示呢,下面有一個函數可以對文字進行分行,然後就可以一行行地打印了
第四個參數主要是對像英語這樣多個字母組成一個單詞的語言而設置的,因為像英語你不能把一個單詞一分為二成兩行的,可以傳入一些分詞的標志,如空格、標點符號什麼的,如“ ,.?!”
中文沒有關系
但是日文我也鬧不大清楚,不知道它是怎麼分詞的,是和中文一樣,還是和英文一樣
/**@todo 對一段文字進行分行,這種分行是針對於某個字體的
* @author efei
* @param strSource String 待分行的字符串
* @param font Font 使用的字體
* @param width int 分行後需要滿足的寬度
* @param strSplit String 斷詞判斷字符,如空格和一些標點符號。中文不需要斷詞,則傳空字符串
* @return Vector
*/
public Vector getSubsection(String strSource,Font font
,int width,String strSplit){
Vector vector = new Vector();
String temp=strSource;
int i,j;
int LastLength = 1;
int step = 0;
try{
while (!temp.equals("")) {
i=temp.indexOf(" ");
if(i>0){
if(font.stringWidth(temp.substring(0,i-1)) >= width){
i = -1;
}
}
if(i==-1){
if(LastLength>temp.length()){
i = temp.length();
}else{
i = LastLength;
step = font.stringWidth(temp.substring(0, i)) > width ? -1 : 1;
//得到臨界點
if(i<temp.length()){
while (! (font.stringWidth(temp.substring(0, i)) <= width
&& font.stringWidth(temp.substring(0, i + 1)) > width)) {
i = i + step;
if (i == temp.length())
break;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved