我正在使用来自How To - Create a ListField with check boxes的复选框创建一个ListField 但是我没有得到如何在ListField中连续包装Text 我提到了这个帖子 Text Wrapping for text in List Field items
这里写的是
如果您要显示的只是文字,那么我会采用rab建议的方法。
我只在ListField中显示Text,如果它不适合设备屏幕,我想要换行 但我没有得到“由Rab建议的方法”,其中如何计算?
String [] linesToDraw =根据行宽计算行数
我对这个问题有所了解吗?
凭借你的逻辑我得到了
* split text on words
* create string array and while words array not empty do
o create string lineStr
o while getFont().getAdvance(lineStr+" "+words[i]) < row width move words[i] to lineStr
我喜欢这样做
if(getFont().getAdvance(lineStr+" "+words[i]) < Display.getWidth())
{
lineStr += words[i];
}
&安培;我将lineStr存储在Vector linesToDraw中,作为我用于存储下一行文本的相同lineStr。
&安培;最后我正在做的事情
for (int i = 0; i < linesToDraw.size(); i++)
{
String textToDraw = (String)linesToDraw.elementAt(i);
graphics.drawText(textToDraw, 0, y, 0, w);
y += fontHeight;
}
但如何计算不。一排排的&amp;行高?
因此,使用此行高度,我可以编写setRowHeight(rowHeight),因为不同行的行高不同。
我得到了没有。根据行宽和正确的线条将它存储在Vector&amp;我在做
int fontHeight = this.getFont().getHeight();
for (int i = 0; i < linesToDraw .size(); i++)
{
textToDraw = (String)linesToDraw.elementAt(i);
graphics.drawText(textToDraw, xpos, ypos, 0 , width);
ypos += fontHeight;
}
现在它绘制线条,但是在前一个线条上,因为默认情况下listField.setRowHeight()只占用一行。如果有2行,那么我在drawListRow()中写setRowHeight(getFont()。getHeight()* 2)然后它进入循环
如果我在创建ListField时编写setRowHeight(),那么它会正确显示但是对于所有行都设置了相同的行高。
我在运行时获取要绘制的字符串&amp;对于不同的行,行高度应该是可变的,那么我如何使用什么参数&amp; setRowHeight()用哪种方法?
答案 0 :(得分:1)
我认为“根据行宽计算行数”意味着:
最终你会得到: