HTML 的 JtextPane 太宽

JtextPane with HTML is too wide

我正在尝试创建一个可滚动的 JTextPane 来显示 HTML。我有它的工作,但试图获得正确的尺寸。看来无论我做什么,我都无法影响窗格的宽度。

JTextPane tp=new JTextPane();
        tp.setSize(300,300);
        tp.setContentType("text/html");
        HTMLDocument html=(HTMLDocument) tp.getDocument();
        html.putProperty("IgnoreCharsetDirective", new Boolean(true));
        HTMLEditorKit htmle=(HTMLEditorKit) tp.getEditorKit();
        try {
            htmle.insertHTML(html,html.getLength(),content,0,0,null);
        } catch (BadLocationException | IOException e) {
            // Should not get here
            e.printStackTrace();
        }
        JScrollPane scroll=new JScrollPane(tp,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        scroll.setSize(200,300);
        JOptionPane.showMessageDialog(null,scroll,title,JOptionPane.INFORMATION_MESSAGE);

我已经尝试在 JTextPane 和 JScrollPane 上设置大小,但都不影响宽度。它似乎想将宽度设置为最长的 < p > 标记的宽度,而不是将 HTML 包装在指定的大小内。我似乎无法找到一种设置 JOptionPane 大小的方法,但我的理解是,如果组件大小正确,则不需要。有人能告诉我我错过了什么吗? TIA.

JOptionPane 呼叫 pack()pack() 使用其子项的 preferredSize 来决定其宽度和高度。默认情况下,JTextPane 的首选宽度是最长行的宽度。如果你想改变这种行为,

  • 或者覆盖JTextPane
  • getPreferredSize方法
  • 或者在 JTextPane 上使用 setPreferredSize 而不是 setSize