我得出结论HTML启用JTextPanes不支持自动换行。所以我试图提供一种家庭酿造方法。一旦完成,我会将它发布在网上。我可能没有最好的技术,但它应该在完成后工作。我的问题是由于某些疯狂(非常令人讨厌)的原因,当我将索引传递给我的substring命令时,它将使用相同的值切换实际值但是在否定时抛出java.lang.StringIndexOutOfBoundsException。但是当变量被发送到substring命令时,肯定是肯定的。当我将变量替换为值时,它可以正常工作。我将不胜感激任何帮助。我将包括这个源。
String wordWrap( String oldtxt ) {
int ishere = 0; // the current index
int charlen = 0; // The current length of the current line
int beginint = 0; // Where the text between tags begins
int endint = 0; // Where the text between tags ends
String tempstr = ""; // Where the text is
String newoldtxt = ""; // to work around the damned oc error
String newtxt = ""; // The new text being built
String divystr = ""; // Temp variable to hold a partial string
Boolean a = true; // Needed as temp storage variable
newoldtxt = oldtxt;
while( true ) {
endint = oldtxt.indexOf( "<", endint );
if( endint == -1 ) {
endint = oldtxt.length();
a = false;
}
ishere = endint;
tempstr = oldtxt.substring( beginint, endint ); // Save the text in a temp string
while( ishere > endint )
if( tempstr.length() > ( 22 - charlen )) { // Testing for a complete line
// newtxt += tempstr.substring( ishere, 22 - charlen ); // If a line is complete a line is printed to the pane
newtxt += tempstr.substring( ishere, 22 ); // If a line is complete a line is printed to the pane
ishere += 22 - charlen; // Bumping the current index along
charlen = 0;
newtxt += "<br />"; // Attach a line break
if( ishere >= tempstr.length() && a == false )
return newtxt;
} else if( tempstr.length() < ( 22 - charlen) ) { // Checking to see if there are fewer then 22 chars in the string
divystr = tempstr.substring( ishere, tempstr.length() ); // Dump the rest of the substring into the rebuilt string
newtxt += divystr; // Assign the remaining tempstr characters to newtxt
charlen += divystr.length(); // Add stray chars to charlen
if( a == false )
return newtxt;
}
beginint = oldtxt.indexOf( ">", ( endint ) ); // Locate end bracke
newtxt += oldtxt.substring( beginint, endint ); // Add tag to newtxt
}
}
}
答案 0 :(得分:1)
当你进行最后的substring
调用时,endint
的值为0,大于起始索引,导致StringIndexOutOfBoundsException。
// endint is larger than beginint here
newtxt += oldtxt.substring( beginint, endint );