我 正在使用How To 中的复选框创建一个 ListField - 创建一个带有复选框的 ListField
但我不知道如何在该 ListField 中将文本包装成一行。
我为列表字段项中的文本引用了线程
文本换行
这里写成
如果您显示的只是文本,那么我会采用 rab 建议的方法。
我只在 ListField 中显示文本,如果它不适合设备屏幕,我想包装它。
但是我没有得到“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 存储在 VectorlinesToDraw 中,与我用于存储下一行文本的 lineStr 相同。
&最后我正在做的画
for (int i = 0; i < linesToDraw.size(); i++)
{
String textToDraw = (String)linesToDraw.elementAt(i);
graphics.drawText(textToDraw, 0, y, 0, w);
y += fontHeight;
}
但如何计算没有。行和行高的行数?
所以有了这个行高,我可以写 setRowHeight(rowHeight) 因为不同行的行高是不同的。
我没有。根据行宽正确地处理行并将其存储在 Vector 中并且我正在做
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() 只占用一行。如果有 r 2 行,那么我在 drawListRow() 中写入 setRowHeight(getFont().getHeight()*2) 但然后它进入循环
如果我在创建 ListField 时编写 setRowHeight() ,那么它会正常运行,但是对于所有行都设置了相同的行高。
我在运行时获取要绘制的字符串,并且行高对于不同的行应该是可变的,那么我如何使用什么参数和在哪个方法中设置行高度()?