可能标题很模糊,唉,我也说不清怎么表达。如果光是继承RichTextField,直接setText(str)就可以达到自动换行的效果。
但是我这里要用到drawText的方法,因为我需要我的文字显示在指定的x,y点上,并且还要画些东西,这样就不能用setText(),好像setText()是默认0,0,而且
drawText()无法自动换行?如果看官觉得我此文有误,请留言给我。
没有花太多时间去确认这个,我直接采用算像素,然后判断是否超过长度,超过则再次drawText。
Feelsina.twfont为str中单个汉字的最大像素。
// private void writetext(Graphics g){
// Font font;
// font = Font.getDefault().derive(Font.PLAIN,Feelsina.twfontsize,Ui.UNITS_pt);
// int d = font.getAdvance(mytext);
// int l = mytext.length();
// int i;
//
// i = d/(Display.getWidth()-110);
// if(i<1){
// g.drawText(mytext, 30, 30);
// }
// else {
// String str = mytext;
// for (int j=0;j<i+1;j++){
// int p = 0;
// int k = 0;
// boolean flag2 = false;
// if(str.length()>l/(i+1)+p){
// k =font.getAdvance(str.substring(0,l/(i+1)+p));
// while (k < (Display.getWidth()-110)) {
// p++;
// if((l/(i+1)+p)==str.length()){
// flag2 = true;
// break;
// }
// k =font.getAdvance(str.substring(0,l/(i+1)+p));
// }
// if(flag2)
// g.drawText(str, 30,30+j*Feelsina.twfont );
// else
// g.drawText(str.substring(0,l/(i+1)+p-1), 30,30+j*Feelsina.twfont );
// str = str.substring(l/(i+1)+p-1);
// }
// else
// g.drawText(str, 30,30+j*Feelsina.twfont );
// }
// }
// }