2011-10-27 32 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似乎很好地工作。在了解它有多少错误之前,我已经这么做了很长时间了。尽量避免这种情况,或者即将或迟到,您将有大量的代码进行重构。