在做项目的时候,遇到屏幕分行显示文字的问题,参考了部分资料之后,写了如下解决方案(没有考虑英文单词避免换行的问题):
public void paint(Graphics g) {
Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
Font.SIZE_MEDIUM);
g.setColor(125, 125, 125);
g.fillRect(0, getHeight() / 2, getWidth(), getHeight());
g.setFont(font);
g.setColor(0, 0, 0);
Vector vc = MulString("屏幕分行显示解决方法!屏幕分行显示解决方法!屏幕分行显示解决方法!");
for (int i = 0; i < vc.size(); i++) {
g.drawString(vc.elementAt(i).toString(), 0,
(getHeight() / 2 + getHeight() / 4 + font.getHeight() * i),
0);
}
}
protected Vector MulString(String string) {
Vector vc = new Vector();
Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
Font.SIZE_MEDIUM);
int width = 0; //记录当前宽度,如果大于屏幕宽度,就添加到Vector
int iPre = 0; //添加到Vector中字符串在原字符串中的起始位
int iNum = 0; //原字符串的总长度
for (int i = 0; i < string.length(); i++) {
iNum++;
width += font.charWidth(string.charAt(i));
if (width >= (getWidth() - 2)) {
vc.addElement(string.substring(iPre, i));
iPre = i;
width = 0;
}
}
vc.addElement(string.substring(iPre, iNum));
return vc;
}