在做项目的时候,遇到屏幕分行显示文字的问题,参考了部分资料之后,写了如下解决方案(没有考虑英文单词避免换行的问题):
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; }