在JPanel中修复JEditorPane的大小

时间:2011-10-27 09:25:26

标签: java swing layout-manager jeditorpane

这与我的上一个问题非常相似,但是在JPanel中这样做我试图在JPanel(固定大小)中显示一个JEditorPane,然后显示一个HTML文本字符串。 (这是我可以使用卡布局和开关面板与不同的显示器)。我可以再次显示所有内容,但似乎我传递到EditorPane的HTML字符串中的文本没有切断并换行到新行。即它只是伸出屏幕。 似乎setSize方法与Pane的大小无关?

我正在为不同大小的屏幕制作这个应用程序,因此重要的是文本包装到新行并适合屏幕大小而不是跑掉!当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);

非常感谢Sam

2 个答案:

答案 0 :(得分:6)

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

使用body元素中的样式设置宽度,如this example

答案 1 :(得分:3)

好吧,你不要在你的应用程序中使用setXXXSize方法。请参阅此thread

只需考虑几个因素:

  1. 由LayoutManager定位并确定组件的正确大小,因此不应明确指定
  2. 并非所有LayoutManagers都会处理组件的preferredSize值。
  3. 即使LayoutManager负责首选大小,明确使用这些方法也是错误的
  4. 如果您想明确使用尺寸,请仅使用包含所有组件的父框架。
  5. 如果LayoutManager没有以正确的方式放置组件,请使用不同的LayoutManager或实现自己的。
  6. 注意:

    我知道在某些情况下使用setXXXmethods似乎工作正常。在了解了多少错误之前,我做了很长时间。尽量避免这种情况,或者很快或者很晚,你会有很多代码要重构。