JTextPane HTML-приложение для замораживания рендеринга текста в некоторых дистрибутивах Linux
У меня есть следующее toString()
метод:
@Override
public String toString() {
final String htmlStart = "<html><body>\n";
final String htmlEnd = "</body></html>";
final StringBuilder conversationBuilder = new StringBuilder(htmlStart);
final String sentMessageTemplate =
"<div align=\"left\">\n" +
" <p style=\"background-color:#ccffdd;color:black;font-family:verdana;font-size:15\">\n" +
" <font size=\"2\">%s</font><br><i>%s</i>\n" +
" </p>\n" +
"</div>";
final String receivedMessageTemplate =
"<div align=\"right\">\n" +
" <p style=\"color:black;font-family:verdana;font-size:15\">\n" +
" <font size=\"2\">%s</font><br><font color=\"#DC0015\" size=\"3\"><b>%s</b></font><br><i>%s</i>\n" +
" </p>\n" +
"</div>";
final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.MEDIUM, Locale.getDefault());
String displayedMessage;
for (Message elem : messageList) {
String messageDatetime = dateFormat.format(elem.getDatetime());
displayedMessage = elem.isReceived() ?
String.format(receivedMessageTemplate, messageDatetime, elem.getFrom(),
parseMessagePlainText(elem)) :
String.format(sentMessageTemplate, messageDatetime,
parseMessagePlainText(elem));
conversationBuilder.append(displayedMessage);
}
return conversationBuilder.append(htmlEnd).toString();
}
private String parseMessagePlainText(Message message) {
return StringEscapeUtils.escapeHtml4(message.getPlainText())
.replace("\r", "").replace("\n", "<br>");
}
Результирующая строка в формате html будет установлена как текст JTextPane. Этот код прекрасно работает на Windows и MacOS, но заставляет приложение зависать на некоторых дистрибутивах Debian Linux (протестировано на Kali Linux и Debian Stable). Он отлично работает на Linux Mint 17 тоже.
Я думал, что дистрибутивы Linux могут не поддерживать некоторые стили или теги... но я не могу понять, что может вызвать это.
РЕДАКТИРОВАТЬ: я использую openJDK 1.8-151