gpt4 book ai didi

java - 将 HTML 内容设置为 JTextPane 会扰乱 System.out 重定向

转载 作者:行者123 更新时间:2023-12-02 05:52:19 24 4
gpt4 key购买 nike

我正在使用MessageConsoleSystem.outSystem.err 重定向到名为 jMessageConsoleTextPaneJTextPane 的类。

我在构造函数中配置它,如下所示:

jMessageConsoleTextPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
MessageConsole mc = new MessageConsole(jMessageConsoleTextPane, true);
mc.redirectOut(null, null);
mc.redirectErr(Color.RED, null);
mc.setMessageLines(100);

并且在 NetBeans 中,我将其设置为 contentType text/html

它用 System.outSystem.err 打印一切正常,但我的问题来了。我尝试将 jMessageConsoleTextPane 的文本设置为我根据某些变量创建的 html 表格(其中包含另外两个 html 表格),所以我这样做:

String htmlTable = WordCounting.getHtmlTable(wordsArrays, hashtagsArrays);
jMessageConsoleTextPane.setText(htmlTable);

以下是 htmlTable 字符串的样子(直接从调试器获取):

<html>
<body>
<table>
<tr>
<td>
<table border="1">
<th colspan="3">Words used most</th>
<tr>
<td>1</td>
<td>day</td>
<td>3720</td>
</tr>
<tr>
<td>2</td>
<td>good</td>
<td>3354</td>
</tr>
<tr>
<td>3</td>
<td>love</td>
<td>2689</td>
</tr>
<tr>
<td>4</td>
<td>time</td>
<td>2372</td>
</tr>
<tr>
<td>5</td>
<td>got</td>
<td>1897</td>
</tr>
<tr>
<td>6</td>
<td>lot</td>
<td>1831</td>
</tr>
<tr>
<td>7</td>
<td>know</td>
<td>1801</td>
</tr>
<tr>
<td>8</td>
<td>photo</td>
<td>1772</td>
</tr>
<tr>
<td>9</td>
<td>girl</td>
<td>1755</td>
</tr>
<tr>
<td>10</td>
<td>life</td>
<td>1754</td>
</tr>
</table>
</td>
<td>
<table border="1">
<th colspan="3">Hashtags used most</th>
<tr>
<td>1</td>
<td>win</td>
<td>136</td>
</tr>
<tr>
<td>2</td>
<td>panjaforpunjab</td>
<td>105</td>
</tr>
<tr>
<td>3</td>
<td>aaronto600k</td>
<td>100</td>
</tr>
<tr>
<td>4</td>
<td>rt</td>
<td>89</td>
</tr>
<tr>
<td>5</td>
<td>giveaway</td>
<td>85</td>
</tr>
<tr>
<td>6</td>
<td>cfc</td>
<td>70</td>
</tr>
<tr>
<td>7</td>
<td>whybeinarelationshipwhen</td>
<td>65</td>
</tr>
<tr>
<td>8</td>
<td>retweet</td>
<td>64</td>
</tr>
<tr>
<td>9</td>
<td>gameinsight</td>
<td>64</td>
</tr>
<tr>
<td>10</td>
<td>rhoareunion</td>
<td>57</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

这是它在 jMessageConsoleTextPane 中的外观:

first

然后我尝试使用 System.out ,它应该打印以下文本:

[23:19:32] Getting driver...
[23:19:32] Connecting to database...
[23:19:32] Executing query...
5.6.16

这发生了:

second

基本上所有内容都会添加到第二个表格的最后一个单元格中。即使我执行jMessageConsoleTextPane.setText(""),仍然有一个表格单元格像这样(左上):

third

所以这是怎么回事?为什么会留下一个单元格以及如何修复它?

最佳答案

MessageConsole 类并非设计用于 HTML。该类所做的就是将文本添加到文档的末尾,在您的情况下,该文本似乎是表格的最后一个单元格。

您可以在首次创建 HTML 时尝试向文档添加空 HTML 标记。然后,文本可能会添加到此标记而不是表格单元格。

也许是这样的:

       </table>
<p></p>
</body>

这完全取决于文档如何解析插入到文档中的文本。

关于java - 将 HTML 内容设置为 JTextPane 会扰乱 System.out 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23436461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com