Java在选定位置将字符串拆分为多个字符串
我正在尝试制作一种方法,将长文本分割成几行,并使用图形在文档上绘制它们。我设法找出了如何分割从JTextArea组件获得的行,但不知道如何在行过长时使它们换行/换行 以下是我目前的代码:Java在选定位置将字符串拆分为多个字符串,java,string,printing,graphics2d,drawstring,Java,String,Printing,Graphics2d,Drawstring,我正在尝试制作一种方法,将长文本分割成几行,并使用图形在文档上绘制它们。我设法找出了如何分割从JTextArea组件获得的行,但不知道如何在行过长时使它们换行/换行 以下是我目前的代码: void drawString(Graphics g, String text, int x, int y, Font w) { g.setFont(w); for (String line : text.split("\n")) g.drawSt
void drawString(Graphics g, String text, int x, int y, Font w) {
g.setFont(w);
for (String line : text.split("\n"))
g.drawString(line, x, y += g.getFontMetrics().getHeight());
}
感谢您的帮助
多谢各位
编辑:
我的想法是计算字符串的字符位置,如果它到达一个选定的位置,那么我会在那里添加一个换行符(“\n”)。还有其他的建议吗?或者我应该接受这个建议吗?
谢谢。您可以使用这样的字数计算方法,而不是拆分方法:
public String[] splitIntoLine(String input, int maxCharInLine){
StringTokenizer tok = new StringTokenizer(input, " ");
StringBuilder output = new StringBuilder(input.length());
int lineLen = 0;
while (tok.hasMoreTokens()) {
String word = tok.nextToken();
while(word.length() > maxCharInLine){
output.append(word.substring(0, maxCharInLine-lineLen) + "\n");
word = word.substring(maxCharInLine-lineLen);
lineLen = 0;
}
if (lineLen + word.length() > maxCharInLine) {
output.append("\n");
lineLen = 0;
}
output.append(word).append(" ");
lineLen += word.length() + 1;
}
// output.split();
// return output.toString();
return output.toString().split("\n");
}
你什么意思?当前代码可以很好地处理新行,但当新行太长时就不行了。我读错了,我将删除注释。没有必要在引号部分中包装
code
部分,除非它确实是引号,在这种情况下,您还应该在您的答案中包含它的源代码。还有.append(word+“”)
表示有人不了解StringBuilder的用途。它用于避免创建自己的新StringBuilder的字符串连接,这意味着此代码与.append(新StringBuilder(word).append(“”.toString())
相同。我们应该使用append(word).append(“”
)。