Opa alexafe,
Obrigado pela resposta. Estava dando uma testada no código que você postou e percebi que ele limita a quantidade de caracteres do JTextArea.
Até achei uma alternativa para limitar a quantidade de linhas:
public class LimitedLinesDocument extends DefaultStyledDocument {
private static final String EOL = "\n";
private int maxLines;
public LimitedLinesDocument(int maxLines) {
this.maxLines = maxLines;
}
public void insertString(int offs, String str, AttributeSet attribute) throws BadLocationException {
if (!EOL.equals(str) || StringUtils.occurs(getText(0, getLength()), EOL) < maxLines - 1) {
super.insertString(offs, str, attribute);
}
}
}
public class StringUtils {
public static int occurs(String str, String subStr) {
int occurrences = 0;
int fromIndex = 0;
while (fromIndex > -1) {
fromIndex = str.indexOf(subStr, occurrences == 0 ? fromIndex : fromIndex + subStr.length());
if (fromIndex > -1) {
occurrences++;
}
}
return occurrences;
}
}
Diante disso, me deparei com um segundo problema:
O LineWrap quebra a linha apenas visualmente no JtextArea, se o usuário escrever um parágrafo muito grande, que visualmente ocupe 5 linhas do JTextArea, ao exportar esse texto eu recebo apenas como uma única linha.
Eu preciso receber as 5 linhas, no formato identico que está apresentado na GUI para o usuário.
Será que tem como?