2011-10-27 30 views
1

這與我最後一個問題非常相似,但是在JPanel中執行它我嘗試在JPanel(固定大小)內顯示一個JEditorPane,然後顯示一個HTML文本字符串。 (這樣我可以使用不同顯示器的卡片佈局和開關面板)。我可以再次顯示所有內容,儘管看起來我傳遞給我的EditorPane的HTML字符串中的文本沒有被切斷並換行。即它只是從屏幕上延伸出來。 看來,setSize方法對窗格大小沒有影響?修復JEditorPane在JPanel中的大小

我正在爲不同大小的屏幕製作此應用程序,所以重要的是文字換行並適合屏幕大小而不是跑掉!它在EditorPane直接位於JFrame而不是JPanel的情況下起作用。

JEditorPane pane = new JEditorPane(); 
    pane.setEditable(false); 
    HTMLDocument htmlDoc = new HTMLDocument() ; 
    HTMLEditorKit editorKit = new HTMLEditorKit() ; 
    pane.setEditorKit (editorKit) ; 
    pane.setSize(size); 
    pane.setMinimumSize(size); 
    pane.setMaximumSize(size); 
    pane.setOpaque(true); 
    pane.setText("<b><font face=\"Arial\" size=\"50\" align=\"center\" > Unfortunately when I display this string it is too long and doesn't wrap to new line!</font></b>"); 
    bg.add(pane, BorderLayout.CENTER); 

非常感謝薩姆

+0

看看 http://stackoverflow.com/questions/5462798/java-se-jeditorpane-not-wrapping-text-on-resize-when-using-miglayout – Mead3000

回答

5
..."Unfortunately when I display this string it is too long and doesn't wrap to new line!" 

使用正文元素中的樣式設置寬度,如this example中所示。

+0

+1那麼,這是正確的答案。實際上,我只是一個建議,爲什麼不使用setXXXSize。 – Heisenbug

+0

如果您可以修改HTML內容字符串,則爲+1 – StanislavL

3

好吧,你shold從來沒有使用你的應用程序setXXXSize方法。看到這個thread

短短几方面的考慮:

  1. 這是給LayoutManager的定位,並建立一個組件的大小合適,所以你不應該指定它明確地
  2. 並非所有佈局管理採取的首選大小值的護理組件。
  3. 即使LayoutManager處理首選大小,明確使用這些方法也是錯誤的
  4. 如果要明確使用大小,請僅使用包含所有組件的父框架進行。
  5. 如果一個LayoutManager沒有以正確的方式放置組件,請使用不同的LayoutManager或實現您自己的。

的說明:

我知道,在某些情況下使用setXXXmethods似乎很好地工作。在瞭解它有多少錯誤之前,我已經這麼做了很長時間了。儘量避免這種情況,或者即將或遲到,您將有大量的代碼進行重構。