2014-05-02 55 views
0

我現在用的是MessageConsole類重定向System.outSystem.err到一個名爲jMessageConsoleTextPaneJTextPane設定HTML內容的JTextPane弄亂的System.out重定向

我在我的構造函數將其配置是這樣的:

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

這是怎麼回事呢?爲什麼還有一個單元格,我該如何解決?

回答

2

MessageConsole類沒有被設計爲與HTML一起使用。所有的類都將文本添加到文檔的末尾,在您的情況下它似乎是表格的最後一個單元格。

當您第一次創建HTML時,您可以嘗試向Document添加空的HTML標記。然後,也許文本將被添加到這個標籤,而不是表格單元格。

也許是這樣的:

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

這一切都依賴於文件如何解析插入到文檔中的文本。

+0

使用'

'使每條線都有一個額外的中斷線,但我試過' ',它看起來好像工作得很好,謝謝。 –