2015-05-07 73 views
0

我能做到這一點,我的富文本將有固定的寬度設置車身寬度StyledDocument中(的JTextPane)

JTextPane pane = new JTextPane(); 
pane.setContentType("text/html"); 
pane.setText("<html><body style='width:100px'>Some text</body></html>"); 

但是我直接與文檔工作,而無需HTML。我怎樣才能設置寬度?

DefaultStyledDocument doc = (DefaultStyledDocument) pane.getStyledDocument(); 
//??? (set width) 
+0

我不認爲這是可能的,試着爲'pane'設置'setMinimumSize'。 –

+0

爲什麼不從組件中設置尺寸而不是通過文檔來完成尺寸? – Sharcoux

回答

0

寬度不是模型(文檔)的一部分。應該有一個視圖來處理文檔中的寬度屬性並相應地設置寬度。

您應該將EditorKit的ViewFactory中的根視圖(SectionView)替換爲從Document元素中獲取寬度的自定義視圖。

例如見鏈接 http://java-sl.com/Pagination_In_JEditorPane.html

它描述瞭如何分頁添加到的EditorKit。您可以使用代碼作爲示例並僅修改寬度。

Extend EditorKit. 
Replace default ViewFactory with yours 
Replace root view (SectionView) 
Replace the view's getPreferredSpan(int axis) for X axis to use the width from the Document 
0

此外Document是StyledDocument,但也有兩個級別:段落和字符。在這種情況下,人們可能會使用HTMLDocument,並使用CSS樣式表(body { width: 14cm; })構建它,或者適當地更改CSS樣式表。