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

0 ответов

Другие вопросы по тегам